Change Log

From LINKS - Documentation
Jump to: navigation, search

Here you can find changes done around every major dev beta update and that are now available in public beta.


#ChangeLog v2.6.3.24

  • Fixed issue with dictation in shell.action field.
  • Added functions:
    • [MoveThisWindow("ScreenNumber","PhraseOnSuccess","PhraseOnError")]
    • [MoveWindowByCaption("WinCaption","ScreenNumber","PhraseOnSuccess","PhraseOnError")]
    • [CloseWindowByCaption ("WinCaption","PhraseOnSuccess","PhraseOnError")]
    • [ActivateWindowByCaption("WinCaption","PhraseOnSuccess","PhraseOnError")]
    • [GetCaption("PhraseOnError")]
    • [SetWindowTransparency("Percent","PhraseOnError")]
    • [SetWindowTransparencyByCaption("WinCaption","Percent","PhraseOnError")]
    • [MoveWindowEx("WinCaption","WinLeft","WinTop","WinWidth","WinHeight","PhraseOnSuccess","PhraseOnError")]
    • [MoveThisWindowEx("WinCaption","WinLeft","WinTop","WinWidth","WinHeight","PhraseOnSuccess","PhraseOnError")]

#ChangeLog v2.6.3.18

  • Added functions:
    • [GetClipboardText()]
    • [Clip()]
    • [Type("str","sendkeys"] or [Type("str","winforms"]

#ChangeLog v2.6.3.17

  • Functions added:
    • [LoadProfile("profile name")]
    • [GetSpeech()] - use with output=response and request=DISABLE_RECURSE
      • Same as [GetLastSpeech()]
    • [GetClipboardText()]
    • [StreamIt("full file path")] - works with mp3
    • [SerialWrite("LED.ON","SerialConfig_test")]
    • [SerialReadLine("timeout in ms","SerialConfig_test")] (not stable)

#ChangeLog v2.6.3.15

  • Functions Added:
    • [GetLastSpeech()]
      • Enables speaking through browser
      • Run in webrequest with DISABLE_RECURSE action=[GetLastSpeech()]&request=DISABLE_RECURSE
      • Use in chrome only/maybe edge
    • [GetLastSpeechAsBase64()]
      • gets last speech as base64
    • [GetNextWaveFilePath("")]
      • file name to be used for other wave files.
      • This allows you to save custom wave file with a specific name in Customization\Speech\ that would be played by GetLastSpeech() function.
  • Added speech wav files in Customize\Speech folder
  • All async speech will be stored there for the session
  • Added 4 default commands
    • enable auto updates
    • disable auto updates
    • enable saving speech
    • disable saving speech
    • Reverted cortana.dll to older version

#ChangeLog v2.6.3.11

  • Read this - fix for ;
  • AiIntro function - had a problem in GetWord function - fixed. - May affect GetAnswer function (possibly in better direction.)
  • Speak function updated - When invalid voice name is provided it should handle that a bit better/faster

#ChangeLog v2.6.3.8

  • Updated [VoiceName...] parsing when using -ret
  • Added Functions:
    • [GetActiveVoiceName()]
    • [GetCurrentVoiceOfSpokenPhrase()]
    • [GetDefaultVoiceVolume()]
    • [GetDefaultSystemVolume()]
    • [GetDefaultVoiceRate()]

#ChangeLog v2.6.3.6

  • Keyboard section updated.
  • Record button working again.
  • Syntax updated for keys.
  • List of Keys that are now used in keyboard section.
  • Added Mouse event commands.
    • {MOUSE.MOVE:X-Axis,Y-Axis}
    • {MOUSE.LEFTDOWN}
    • {MOUSE.LEFTUP}
    • {MOUSE.RIGHTDOWN}
    • {MOUSE.RIGHTUP}
    • {MOUSE.MIDDLEDOWN}
    • {MOUSE.MIDDLEUP}

#ChangeLog v2.6.3.3

  • Updated Functions:
    • [AutoSleep(...)]
    • [GetAnswer()]
  • Added Function:
    • [InitQuestion("QuestionByAI","WordListTextFileName","PositiveGrammarColumnNameOrNumber","PositiveResultColumnNameOrNumber","NegativeGrammarColumnNameOrNumber","NegativeResultColumnNameOrNumber","ListeningTimeout","ShowIfItsNegativeOrPositive")] [GetAnswer()]
  • Tray/context menu now has version numbers for plugins.
  • Changed auto reset code so it uses less cpu.

#ChangeLog v2.6.2.96

  • Added customizable sounds for cortana without ui command.

#ChangeLog v2.6.2.94

  • Added New functions:
    • [SetVarDate("varName","date")]
      date format = yyyy,MM,dd,hh,mm,ss
    • [SetVarDate("varName","value","date")]
      date format = yyyy,MM,dd,hh,mm,ss

#ChangeLog v2.6.2.93

  • Added function:
    • [AutoSleep("EnableOrDisable","Timeout","PhraseOnExecute")] - not tested
  • Updated Function:
    • PlaySound function to be more stabilized
    • Cortana function
    • Added done sound on no GUI

#ChangeLog v2.6.2.91

  • Plugins can now be loaded from tray icon..
    • Plugins config is saved in Customization\XML\PluginsConfig.xml

#ChangeLog v2.6.2.88

  • Added function:
    • [GetPrevious("var name")] or [GetPreviousVar("var name")]

#ChangeLog v2.6.2.87

  • Added functions:
    • [Set("varName","varValue","resetTime","resetValue")]
      • Sample:
        • [Set("Details","NewsDescription","30","")]
        • [IsEmpty("StringToCheck")]","Return this string if StringToCheck IsEmpty")]
      • Sample:
        • [IsEmpty("[Get("[Get("Details")]")]","Details for what, sir?")]
        • Return data from a variable that may exist and speak it, else return "Details for what, sir?"
    • [Remove("varName")] or [RemoveVar("varName")]
    • [GetDateTime("varName","DateTimeFormat")] or [GetVarDateTime…]
      • Sample:
        • [GetDateTime("Details","dd/MM/yyyy")]
        • [GetDateTime("Details","HH:mm")]
    • [IndexOf("string","string to find")]
    • [LastIndexOf("string","string to find")]
  • Updated Functions:
    • Set/Get functions updated
    • Set function now updates DateTime and PreviousValue values.
    • Get doesn't not error anymore when variable is not found.

#ChangeLog v2.6.2.81

  • Fixed db loading issues.
  • Added a way to auto fix db connection issues.
  • Exposed SpeechSynth.SpeechPrompts so other apps/plugins can figure out if LINKS is speaking.

#ChangeLog v2.6.2.76

  • Function Added:
    • [LINKS.LHttp.Put("JSON","URI")]
    • [LINKS.LHttp.Put("{"on":true}","http://huebridge/api/lz3nFIcGOelQlsxsDJYqrXGuxivjFmWswZ9fIGcw/lights/1/state")]
  • Changed default settings
    • Made PersistedBackgroundAdaptation off by default
    • Moved music function to "Initial checks completed"
    • Disabled push to talk check box

#ChangeLog v2.6.2.74

  • Play/pause/stop music/video, show/hide media player commands updated.
  • Show/hide should now work with any media player selected in settings.
  • Play video should now play a random video.

#ChangeLog v2.6.2.73

  • Plugins now loads after everything else is loaded to make sure nothing crashes while it loads new assemblies.
  • Smoother startup animation.
  • Added plugins OnDispose support.
    • This method is called from all plugins before LINKS exits.
  • Allowed case insensitive for built in functions.
  • Replies back when asked to check update.
  • More stable webserver initialization.

#ChangeLog v2.6.2.71

  • Allows to run async functions, first async web function will be the uAuth2 function...
  • New default function added: "close without confirmation" (add it manually in default commands)

#ChangeLog v2.6.2.70

  • Bug fix for functions.
    • \\ was not allowed in beginning of any parameter. Fixed.

#ChangeLog v2.6.2.68

  • Enabled position saving for main control center.

#ChangeLog v2.6.2.67

  • Some UI templates updated so plugins can access them.

#ChangeLog v2.6.2.65

  • Added Function:
  • [SayAs("data","ContentType")]
    • This function is only for speech (obviously)
    • See this for more info on ContentType
    • Sample:
      • http://localhost:54657/?action=[Speak("The phone number is [SayAs("18001239874","Telephone")]")]&key=ABC1234

#ChangeLog v2.6.2.64

  • All UpdateReached events updated to fix multiple recognition events issues.

#ChangeLog v2.6.2.61

  • InitReport will now be written if audio error occurs.
  • Tray icon is now only clickable when LINKS is online and ready.
  • Each db command now starts with open and end with close connection, may help db issues.

#ChangeLog v2.6.2.58

  • Error log will now be posted in event viewer if LINKS is started as Administrator.

#ChangeLog v2.6.2.55

  • Might fix issue with DB connection bug when changing profiles while mic is on.
  • Test db performance issues including:
    • Calling commands from different sections and changing profile then calling more commands.
    • Changing profiles by voice vs change profile with UI.

#ChangeLog v2.6.2.52

  • Added Function:
    • [GetFile("FilePathOrUri","SaveAs")]
      • SaveAs is optional
      • Any file can now be downloaded. Might have a size limit.
      • Sample:
        • http://localhost:54657/?action=[GetFile("http://jarvis.ai-dot.net/test.txt","test.txt")]&key=ABC1234&output=response
    • [JsonToXML("FilePathOrUri","SaveAs")]
      • SaveAs is optional
      • Sample:
        • http://localhost:54657/?action=[JsonToXML("http://ai-dot.net/test_json.json","test_json.xml")]&key=ABC1234&output=response
    • [GetXPathValue("FilePathOrUri","XPath")]
      • Sample:
        • http://localhost:54657/?action=[GetXPathValue("http://ai-dot.net/test_json.json","/root/glossary/title")]&key=ABC1234&output=response

#ChangeLog v2.6.2.51

  • Fixes zunair.rocks/dashboard issue for fetching commands
  • [EmulateSpeech("any command")]
    • This should work on dynamic commands

#ChangeLog v2.6.2.50

  • Added Functions:
    • [TextToWave("phrase","voice","volume",'rate","filename","getBase64")]
    • [TextToWave("wave to base 64","","",'","","true")]
  • Speech code updated to fix a start of voice change/volume bug.

#ChangeLog v2.6.2.49

  • [TextToWave("phrase","voice","volume","rate","filename")]
    • Voice, Volume, Rate is same as SetTaskEx arguments/parameters.
    • Sample:
      • http://localhost:54657/?action=[TextToWave("This is a test","","","","")]&key=ABC1234
        It will make a wav file in LINKS\Customization\Speech\temp.wav
      • We can put file name or full path in last parameter if needed

#ChangeLog v2.6.2.48

  • Added Function:
    • [RemoveTask("name")]
      • Deletes task created by SetTaskEx
  • Updated tasks so each task is checked every second

#ChangeLog v2.6.2.47

  • Functions:
    • [GetXPathValue("XML xPath")]
      • Sample:
        • http://localhost:54657/?action=[GetXPathValue("G:\...\jarvisWPF.vshost.exe.config","/configuration/userSettings/jarvisWPF.Properties.Settings/setting{@name%3D"searchEngine"}")]&key=ABC1234&output=response
      • Take a look at FreeFormatter.com might be able to use all syntax from there... just replace any [...] square brackets with {...} curly braces and encode = and & characters
    • [GetAnswer("","","","","","","")]
      • Sample:
        • http://localhost:54657/?action=[GetAnswer("Do you want me to turn on x light?","yes;on;lights","Lights On","off;lights","Lights Off","5000","show")]&key=ABC1234&output=response

#ChangeLog v2.6.2.46

  • [GetAnswer("Do you want me to turn on x light?","yes;on;lights","Lights On","off;lights","Lights Off","5000","ShowIfItsNegativeOrPositive")]
  • [GetXPathValue("xmlFilePath","xPath")]

#ChangeLog v2.6.2.44

  • New command syntax for voice change per command
    • Sample:
      • Grammar: {ai=test_ainame} listen to {d=test_dictation}
      • Response:[VoiceName="{{ai}}"]I heard {d}. I am {ai} and my voice is set to {{ai}}
    • In any response we can now add the following to change voice properties:
      • [VoiceName="..."]
      • [VoiceRate="..."]
      • [VoiceEmphasis="..."]
      • [VolumeType="..."]
      • [SpeechDelay="..."]
  • Updated dictation code
    • Should fix the issue where ai name was spoken with the dictation.

#ChangeLog v2.6.2.37:

  • Updated update functions.
  • No more update check before startup.
  • Update will be checked after startup.
  • Will notify when update is completed.
  • AutoUpdate can be disabled from xml by changing UpdateOnStartup to false
  • Added LINKSSharedDirectory for scripts and WordLists
    • Can be changed from xml
    • When entering dir path do not end path with slash.

#ChangeLog v2.6.2.31:

  • Added Functions:
    • [GetAnswer("QuestionByAI","WordListTextFileName","PositiveGrammarColumnNameOrNumber","PositiveResultColumnNameOrNumber","NegativeGrammarColumnNameOrNumber","NegativeResultColumnNameOrNumber","ListeningTimeout","ShowIfItsNegativeOrPositive")]
      • "QuestionByAI" = question asked by AI
      • "WordListTextFileName" = WordList to use for positive and negative grammar and results
      • "PositiveGrammarColumnNameOrNumber" = WordList column name or number of positive grammar
      • "PositiveResultColumnNameOrNumber" = WordList column name or number of results to show if positive grammar is recognized
      • "NegativeGrammarColumnNameOrNumber" = WordList column name or number of negative grammar
      • "NegativeResultColumnNameOrNumber" = WordList column name or number of results to show if negative grammar is recognized
      • "ListeningTimeout" = stops listening for answer after defined milliseconds
      • "ShowIfItsNegativeOrPositive" = show/hide + or - symbol based on recognized data
      • Note: We don’t have to use WordList.
      • Example:
        • Command: Say a number
        • Response:[GetAnswer("which number?","test_nums.txt","firstAnswer","firstReslult","secondAnswer","secondResult","3000","Show")]
        • Sample word list:
firstAnswer firstReslult secondAnswer secondResult
one number 1 negative one minus 1
two number 2 negative two minus 2
three number 3 negative three minus 3
four number 4 negative four minus 4
Note: We can use any column for result or answer(grammar)
  • Make sure PositiveGrammar does not contain any words from NegativeGrammar and vice-versa.
  • Sample positive answer result: One = +number 1
  • [CallCommandEx("PositiveOrNagativeResponse","PositiveCommand","NegativeCommand")]
    • Positive or Negative command will be called based on PositiveOrNagativeResponse.
    • If PositiveOrNagativeResponse starts with a + sign, PositiveCommand will be called.
    • If PositiveOrNagativeResponse starts with a - sign, NegativeCommand will be called.
    • {{!Result!}} keyword can be used in PositiveCommand and NegativeCommand arguments to replace using PositiveOrNagativeResponse
    • Example:
      • Command: Hey LINKS
      • Response: [CallCommandEx("+Hello","{{!Result!}}","{{!Result!}}")]
      • In this case Action will be converted to [CallCommandEx("+Hello","Hello","{{!Result!}}")]
  • [SubString("String","startIndex","endIndex")]
    • Example:
      • Command: Remove first char of the string
      • Response: [SubString("+Test","1","")]
      • This will output "Test"

#ChangeLog v2.6.2.26:

  • New function:
    • [SetSpeechConfig("Elizabeth","100","-10")]
      • Name, Volume, Rate (-10 to 10)
      • Remember there are 3 types of volumes:
        • System Volume
        • Base Voice Volume - set through GUI/SetVoice functions and XML
        • Phrase Voice Volume - default is Medium, not allowed change default. Can change per phrase using SpeakEx function.
        • Some Examples:
          • SpeakEx with System Volume
          • localhost:54657/?action=[SpeakEx("Completed","","","","","system")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","","40","","","system")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft Zira Desktop","","","","system")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft David Desktop","40","","","system")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft David Desktop","40","Fast","","system")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft David Desktop","20","Slow","3","system")]&key=ABC1234
        • SpeakEx with Voice Volume
          • localhost:54657/?action=[SpeakEx("Completed","","","","","voice")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","","100","","","voice")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft Zira Desktop","","","","voice")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft David Desktop","40","","","voice")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft David Desktop","100","Fast","","voice")]&key=ABC1234
          • localhost:54657/?action=[SpeakEx("Completed","Microsoft David Desktop","20","Slow","3","voice")]&key=ABC1234
    • Sets default base volume for current voice
      • localhost:54657/?action=[SetSpeechVolume("20")]&key=ABC1234
    • Sets default voice
      • localhost:54657/?action=[SetSpeechVoice("Elizabeth")]&key=ABC1234
    • Sets base Volume and Rate for specific voice
      • localhost:54657/?action=[SetSpeechConfig("Elizabeth","100","-10")]&key=ABC1234
    • Test after volume and rate change:
      • localhost:54657/?action=[SpeakEx("Completed","Elizabeth","20","ExtraFast","0","voice")]&key=ABC1234

#ChangeLog v2.6.2.23:

  • VoiceConfig.XML added
    • Each voice volume will be saved separately.
  • UI and SetVoice should update VocieConfig
  • SpeakEx("phrase","VoiceName","VoiceVolume","VoiceRate","SpeechDelay","VoiceVolumeOrSystemVolume")
    • VoiceVolumeOrSystemVolume = voice or system

#ChangeLog v2.6.2.23:

  • Task xml is written asyc for better performance.
  • Added some error control in webservice functions
  • New Default function:
    • "stop current voice"
  • New Functions:
    • [StopVoiceByName("VoiceName","ResponseOnSuccess")]
    • [StopVoiceByIdentifier ("PhraseIdentifier","ResponseOnSuccess")]
      • PhraseIdentifier is only set in tasks atm - uses tasks name.

#ChangeLog v2.6.2.22:

  • New Functions:
    • [RunAsShell("shellCommand","responseAfterExecution","responseBeforeConfirmation","responseFailed","voiceVolume","voiceRate","voiceName","VoiceVolumeOrSystemVolume")]
  • Updated Function:
    • [SetSpeechVolume("volume")]
    • [SetTaskEx("name","datetime","speechBefore","speechAfter","speechFailed","voice","volume","runAsShellCommand","repeat","rate","VoiceVolumeOrSystemVolume")]

#ChangeLog v2.6.2.20:

  • Intro video code updated again. Video should now download in Customization folder.
  • Loading window will now reappear after intro video.
  • Function updated:
    • SpeakExSysVol is now async.
  • Functions Added:
    • Synchronous speech [SpeakExSysVolSync("phrase","VoiceVolume","VoiceRate","phraseDelay","VoiceName")] where delay = delay between next speech.
    • Asynchronous speech [SpeakExSysVolAsync("phrase","VoiceVolume","VoiceRate","phraseDelay","VoiceName")] where delay = delay between next speech.
  • Fixed saving/retrieving of "Play on startup (full screen)" settings.

#ChangeLog v2.6.2.18:

  • Intro video now downloads in Customization folder.
  • Better shutdown if error is found on startup.
  • Better disposing of HttpServer on exit.
  • New function: [AIIntro("This is {{!AIName!}};I am {{!AIName!}} using {{!AIVoice!}} voice to be used for {{!AICatagory!}}","test_ainame.txt")]
  • Speech Issues resolved - need to work on updating plugin speak functions
  • Added SplashScreen (loading window)
  • Fixed saving of Main Control Center size
  • Main Control Center max size is now based on smallest screen side of current monitor
  • New Functions:
    • [AIIntro("This is {{!AIName!}}","test_ainame.txt")]
    • [AIIntro("I am {{!AIName!}} using {{!AIVoice!}} voice","test_ainame.txt")]