www.pudn.com > xvoice-0.8.1.rar > ChangeLog


Mar 9, 2000, v0.8:

o Added rudimentary gnome config checking in configure.in

o Switched to using a config.h &amt; autoheader to create the name &amt; verison
macros, instead of using version.h

o Added all the .h files to the Makefile.am's, so the "make dist" target
will actually work.

o Added an active vocabulary clist to the gui, so one can easily see
which vocabs are available.

o Added voice control for warning dialogs.

o changed installVocab() to duplicate the new style of enableCommandGrammar().
It records a callback, which is invoked when a word is recognized. On making
this change I noted with horror that SMAPI doesn't report the vocabulary name
when a word is recognized from a command grammar. This is pretty brain-dead.
Currently RecoWordCB searches all installed vocabs to find where the word came
from. This should be fine for small vocabs.

o made enableCommandGrammar() generic, so windowmanagerhints, or the
gui can use it, too. it now takes a dispatch callback which is used
to deliver recorded phrases &amt; translations. Also, it doesn't maintain
the application grammar list. RecoPhraseCB invokes the callback, rather
than sending things directly to a target.

o disableCommandGrammar() doesn't maintain the application grammar list,
as above.

o added a callback pointer to class "grammar".

o changed all messages in ParseEventStream to use LogMessage()

o added severity level to LogMessage() (currently unused)

o switched the main window widget and menus to the libgnomeui functions.
this was easier than trying to add menus &amt; dialogs in raw gtk.

o added Rebuild menu item which recompiles the grammars w/o needing to
restarting XVoice. Note that it does not reload grammars. Saying
"command mode" again will reload them.

o rewrote several error messages, and eliminated some uses of CheckSmRc
in order to add some better error checking (e.g. report file errors as
file errors).

o changed handling of mic state to use the MicStateCB.

o made MainWin a virtual class. moved gnome stuff to gnomeMainWindow.cc.

o added pop-up dialogs in the gnomeMainWin::errormsg() callback.

o Add run-time switch to turn on SAVE_AUDIO, so we don't by default fill up the
file system.

o Deferred initialization of ViaVoice &amt; installation of grammars until after the
gui is up.

o Rewrote the dictate/command state machine so that both may be enabled at once.


Feb 29, 2000

New features:
o context grammars. Two new XML tags support this. In a <xvoice> block, you
can declare a <vocab>, which is like a <application> tag, except there's
no "expr" attribute, and the vocabulary is not automatically associated with any
application. The vocabulary is compiled at run-time, and you can turn it on
or off in an event stream with a <grammar> event. Check README.config for
details.

Detailed changes:

o EventStreams have been generalized, so they can be more than key or mouse events.
They are no longer XEvent structs. A Target is responsible for mapping the
generic event to whatever its native event struct is (XEvent, etc.). Voice.cc
will pull off events specific to it (<grammar>), and pass the rest to the
target. It's kinda ad-hoc right now. The dispatcher may be reworked later.

It's unclear that an "event stream" is really needed. Why not have the parser
call Target or Voice directly as it parses the XML? I decided against this,
because Target events may need to be synced to catch errors, e.g. XSync(),
and it would be annoying to generate an XSync() call after every key event.
So we build a stream.

o Moved the notify callback into MainWin, since the main event loop is a ui
thing, not a voice engine thing. This way we can link as a KDE, WINGS, or a
console mode app &amt; not worry about gtk dependence.

o Did some general cleaning of Voice.cc:
Made lots of stuff static
Organized all the variable declarations at the top
Homogenized the error reporting
Eliminated usage of sprintf &amt; unchecked fixed-length buffers
Clean up some apparent misuse of CheckSmRC

o Added a error message callback stub for MainWin, so it will be able to report
error messages. This won't be enabled until the pop-ups can be dismissed by voice.

Feb 24, 2000

New features:
o BNF grammars. You may now say things like "delete four lines", "highlight
the second parameter", "go to line 257", "control shift m", "control meta a",
etc., without having to declare 257 commands "go to line 1", "go to line 2",
etc., or every permutation of control, shift, and meta.

This is a pretty large change in paradigm. The format of the config file
has changed. See the separate README.config for details. cvtxml.pl will
attempt to convert your old config files.

o Grammars are compiled at run-time. No need to run "xml2bnf".

o Allow mutiple char's is a char='' attribute.

Detailed changes:
o Allow multiple keys in a char='' attribute, if they all have the same
modifiers.

o EventStreams are now dynamically generated(!!!), so we can fill in
templates, etc. This means there is no "application event stream" stored
for each application. event xml is generated by the translations engine,
and parsed on-the-fly from RecoPhraseCB. The "applicationEventStreamList"
is now a "applicationList". event xml in the config file is not parsed
at start-up, but is written to a bnf file &amt; compiled for use later.

o Removed "asisapplications", since all apps are effectively "as is" when
using the translation engine (if you give no translation, the text is
the translation).

o Grammar and translations are compiled at run-time from the config file.
Right now it's done by invoking the shell. This should probably be
changed to use the API calls.

o Added a "<define>" tag for grammars which are not for a specific app, but
may be included inside <application> grammars.

o Updated expat to the latest version, because it has Cdata call-backs.

o Rewrote the config file parsing to use a context structure, instead of
a bunch of globals.

o Fixed declaration of set_trap so ansi compilers won't barf on it.

o Changed the current command grammar name in Voice.cc to be a map<>. This
is because 1) we now need to associate translations with each grammar, and
2) I hope to add context grammars which can be enabled by voice commands,
("enable shell commands", "enable ftp commands", etc.) so we will
potentially have many grammars installed &amt; need a way to index them.

o cleaned up enableCommandGrammar() to be more generic, so we don't have
duplicate code for enabling windowmanagershortcuts.

o removed the get*EventStream calls, as they are obsolete with dynamic
event streams.

o rewrote RecoPhraseCB to be a little easier to follow &amt; to avoid duplicate
code.

Feb 16, 2000

New features:
o Switching apps no longer requires moving back to XVoice. Just say "dictate
mode", "command mode", "idle mode", "microphone off", to switch to that mode
in the currently focused window. Use the windowmanagershortcuts vocab to focus a
different window.

o A text widget has been added to display recognized and rejected words, so
you don't have to watch stdout to see what's going on.

o Bug fixes (below)


Detailed changes:
o rewrote the Voice state machine to have less logic in the UI module (MainWin).

o Using a centralized event dispatcher in Voice, so we can take events from
many sources (e.g. app command grammers... to be added)

o fixed a race condition when defining vocabularies which caused vocabs to
sometimes not be enabled on start-up.

o fixed crash on BadWindow errors when working with windows not our own
(sending, or finding the focus window)

o move iteration over event streams into Target.cc, from EventStream.cc, to
better isolate BadWindow error trapping.

o fixed bug which caused windowmanagershortcuts key sequences to be delivered
to the current selected application. This was due to the use of XSendEvent.
Normal keystrokes are captured by the manager before reaching a client. The
windowmanagershortcuts mechanism is pretty loose and depends upon which
manager you use. Probably this should be dumped in favor of the gnome
mechanism. The current work-around sends these events to the XVoice window,
which should ignore them.

o the TargetList is disabled until the wm issues above are fixed.

o took preliminary steps to isolating X and gtk code so we can eventually be a
console app, wm dock app, gnome panel app, kde dock app, etc.


Feb 16, 2000

o Makes XVoice attempt to bootstrap the environment if it's not set correctly,
so you don't have to run vvsetenv (or worse, run bash and then vvsetenv if
you're using a csh derivative). It uses bash2 to do the bootstrapping. This is
because bash has a bug which is invoked by vvsetenv. You can also use zsh, or
any other shell that understands bash style variable settings. Just don't use
bash.


Feb 7, 2000
o Adds a new attribute, "expr", to the application XML tag which is
a regular expression used to match the target application. This allow much
greater flexibility. E.g.:

to match a vim window:

<application name='vim' expr='VIM.*'>

to match vim or an xterm:

<application name='vim' expr='(VIM.*)|(Xterm)'>

to match netscape:

<application name='netscape' expr='Netscape.*'>

This attribute MUST be present in all application tags.



v0.7

o Added facilities to generate page up/down events, cursor key events and escape key event.
o Added a windowmanagershortcuts vocab to the xml file. This vocab is always enabled - so the user can switch focus between windows and switch between virtual desktops by saying "switch focus" and "move to desktop area left/right/above/below" and "iconify window".
o Added a Makefile to the .xvoice directory to automate the generation and compilation of grammars based on the xvoice.xml file.

o Added SmUndefineVocab call to instances where SmDisableVocab used to be. This seems to have corrected the situation whereby a vocabulary was still active after it had been "SmDisable"(d). Still not sure if this is correct, awaiting response from IBM
o Added facility for saying "select nth appname" as in "select fifth terminal" which selects the fifth listed terminal in the xvoice application list as the target for subsequent commands. Also, the first (or only) application, for example "emacs" can be selected by saying "select emacs".


Nov 25, 1999 v0.6
o Added facility for passing recognised phrases directly to an application for which a .fsg grammar file had been supplied. This is necessary and useful for applications with potentially long and varied spoken command sequences as the xml style of grammar definition provides no facility for accomodating nonterminals.
o Bugfix; the system now correctly looks for the xvoice.xml file in ~/.xvoice

Oct 14, 1999 v0.5
o Added support for XML command grammars
o Added the xml2bnf program
o Added the xvoice.sh script for csh users
o Decided to add a pre-built executable to the distribution
o Modified the configure script to permit builds on certain
systems.
May ??, 1999 v0.4
Fourth Release
o Added warning when VV server is not running (SmConnect == -4)
o Added more commands to dictation mode
o Fixed bug in command mode vocab specifcation
o Added better punctuation and paragraph support
o Added very rudimentary correction stack

May 23, 1999 v0.3
Third Release
o Changed expat libray to be named libexpat to avoid conflict with
libxml component of GNOME. Should probably look into using this
instead.

May 21, 1999 v0.2
Second release
o Added more complete GTK based GUI
o Added command vocab for XVoice itself
o Added beginnings of XML based command event streams (still inoperavite)

May 5, 1999 v0.1
First release