• 1
  • 6
  • 7
  • 8(current)
  • 9
  • 10
  • 23
[RELEASE] Rapier 7.9.0 for Kodi 14.x Helix [DEPRECATED]
(2015-01-24, 00:11)Gade Wrote:
(2015-01-23, 21:51)Baylor Wrote: Hey.
I really liked your skin. It has many awesome features and looks very nice and clean.

I have just one question/suggestion would it be possible to show DialogFullScreenInfo for 5-10 seconds after new video starts and then fade it out? I would be fine with hardcoding it in, just don't have time to study the whole skinning structure.

Hi Baylor and welcome to the forums.

Thanks a bunch for the nice words Smile

I really can't think of a way to do this properly. Do you know of other skins with this feature?

Cheers
Gade


EDIT: I thought of sort of a way to do this. This will show the info from DialogFullScreenInfo.xml the first 8 seconds of a new video. The only problem is that DialogFullScreenInfo.xml will display on top of this if activated.

Copy this to line 6 of VideoFullscreen.xml:

Code:
<control type="group" id="1">
            <description>Video Info Panel</description>
            <left>28</left>
            <top>350</top>
            <visible>!IntegerGreaterThan(Player.Time,08) + ![Window.IsActive(OSDVideoSettings) | Window.IsActive(OSDAudioSettings) | Window.IsActive(VideoBookmarks)
            | Window.IsVisible(PVROSDChannels) | Window.IsVisible(PVROSDGuide)]</visible>
            <include condition="!VideoPlayer.Content(LiveTV)">FSMediaInfoPanel</include>
            <include condition="VideoPlayer.Content(LiveTV)">FSMediaInfoPanelLiveTV</include>
            <include>FSMediaInfoOpenCloseAnim</include>

            <control type="group" id="1">            
                <left>18</left>
                <top>10</top>
                
                <control type="grouplist" id="1">
                    <width>820</width>
                    <height>60</height>
                    <orientation>horizontal</orientation>
                    <itemgap>10</itemgap>
                    <usecontrolcoords>true</usecontrolcoords>
                    <control type="label" id="1">
                        <description>Title/Year</description>
                        <width min="10" max="710">auto</width>
                        <height>60</height>
                        <font>FSInfoTitleFont</font>
                        <textcolor>MediaInfoTitleColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>[UPPERCASE]$INFO[VideoPlayer.Title]$INFO[VideoPlayer.Year, (,)][/UPPERCASE]</label>
                        <aligny>top</aligny>
                        <scroll>true</scroll>
                    </control>
                    <control type="image" id="1">
                        <description>Star Rating</description>
                        <top>2</top>
                        <width>100</width>
                        <height>32</height>        
                        <texture>$INFO[Player.StarRating]</texture>
                        <aspectratio>keep</aspectratio>
                        <include>StarRatingFadeAnim</include>
                    </control>
                </control>

                <control type="label" id="1">
                    <description>Genre</description>
                    <top>30</top>
                    <width>820</width>
                    <height>26</height>
                    <font>FSInfoFont</font>
                    <textcolor>MediaInfoTitleColor2</textcolor>
                    <shadowcolor>ShadowColor</shadowcolor>
                    <label>[UPPERCASE]$VAR[FSInfoLabel1][/UPPERCASE]</label>
                    <aligny>center</aligny>
                </control>
                
                <control type="grouplist" id="1">
                    <description>Time</description>
                    <left>868</left>
                    <width>320</width>
                    <align>right</align>
                    <orientation>horizontal</orientation>
                    <itemgap>10</itemgap>
                    <usecontrolcoords>true</usecontrolcoords>
                    <control type="image" id="1">
                        <top>6</top>
                        <width>24</width>
                        <height>24</height>    
                        <texture>pvr/status_timer_alt.png</texture>
                        <aspectratio>keep</aspectratio>
                    </control>
                    <control type="label" id="1">
                        <left>-6</left>
                        <height>60</height>    
                        <width min="25" max="250">auto</width>
                        <font>FSInfoTitleFont</font>
                        <textcolor>BreadCrumbColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>[UPPERCASE]$INFO[System.Time][/UPPERCASE]</label>
                        <aligny>top</aligny>
                    </control>
                </control>
        
                <control type="grouplist" id="1">
                    <description>Chapter</description>
                    <left>788</left>
                    <top>30</top>
                    <width>400</width>
                    <align>right</align>
                    <orientation>horizontal</orientation>
                    <visible>Player.ChapterCount + !VideoPlayer.Content(LiveTV)</visible>
                    <control type="label" id="1">
                        <width min="10" max="110">auto</width>
                        <height>26</height>
                        <font>FSInfoFont2</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>[UPPERCASE]$LOCALIZE[21396]:[/UPPERCASE]</label>
                        <aligny>center</aligny>
                    </control>
                    <control type="label" id="1">
                        <width min="10" max="400">auto</width>
                        <height>26</height>
                        <font>FSInfoFont2</font>
                        <textcolor>MediaInfoItemColor2</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>[UPPERCASE]$INFO[Player.Chapter]$INFO[Player.ChapterCount, / ]$INFO[Player.ChapterName, - ,][/UPPERCASE]</label>
                        <aligny>center</aligny>
                        <scroll>true</scroll>
                    </control>
                </control>

                <control type="grouplist" id="1">
                    <description>LiveTV NextTitle</description>
                    <left>588</left>
                    <top>30</top>
                    <width>600</width>
                    <align>right</align>
                    <orientation>horizontal</orientation>
                    <visible>VideoPlayer.Content(LiveTV)</visible>
                    <control type="label" id="1">
                        <width min="10" max="140">auto</width>
                        <height>26</height>
                        <font>FSInfoFont2</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>[UPPERCASE]$LOCALIZE[209]:[/UPPERCASE]</label>
                        <aligny>center</aligny>
                    </control>
                    <control type="label" id="1">
                        <width min="10" max="460">auto</width>
                        <height>26</height>
                        <font>FSInfoFont2</font>
                        <textcolor>MediaInfoItemColor2</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label fallback="31001">$INFO[VideoPlayer.NextTitle]</label>
                        <aligny>center</aligny>
                        <scroll>true</scroll>
                    </control>
                </control>
                
                <control type="grouplist" id="1">
                    <description>Media Info Labels</description>
                    <top>66</top>
                    <width>820</width>
                    <orientation>horizontal</orientation>
                    <control type="label" id="1">
                        <width min="10" max="110">auto</width>
                        <height>40</height>
                        <font>MediaInfoFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$VAR[FSInfoLabel2]</label>
                        <aligny>center</aligny>
                    </control>
                    <control type="label" id="1">
                        <width min="10" max="320">auto</width>
                        <height>40</height>
                        <font>MediaInfoFont</font>
                        <textcolor>MediaInfoItemColor2</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>$VAR[FSInfoLabel2Val]</label>
                        <aligny>center</aligny>
                    </control>
                    <control type="label" id="1">
                        <width min="10" max="110">auto</width>
                        <height>40</height>
                        <font>MediaInfoFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>     $VAR[FSInfoLabel3]</label>
                        <aligny>center</aligny>
                    </control>
                    <control type="label" id="1">
                        <width min="10" max="320">auto</width>
                        <height>40</height>
                        <font>MediaInfoFont</font>
                        <textcolor>MediaInfoItemColor2</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>
                        <label>$VAR[FSInfoLabel3Val]</label>
                        <aligny>center</aligny>
                    </control>
                </control>

                <control type="textbox" id="1">
                    <description>Plot</description>
                    <top>105</top>
                    <width>820</width>
                    <height>100</height>
                    <font>MediaInfoDescFont</font>
                    <textcolor>MediaInfoColor</textcolor>
                    <shadowcolor>ShadowColor</shadowcolor>
                    <align>justify</align>
                    <label fallback="31203">$INFO[VideoPlayer.Plot]</label>
                    <wrapmultiline>true</wrapmultiline>
                    <autoscroll time="2000" delay="6000" repeat="10000">true</autoscroll>
                </control>
            
                <control type="grouplist" id="1">
                    <description>Media Flags Area</description>
                    <top>214</top>
                    <width>890</width>
                    <height>35</height>
                    <itemgap>5</itemgap>
                    <align>left</align>
                    <usecontrolcoords>true</usecontrolcoords>
                    <orientation>horizontal</orientation>
                    <include>MediaFlagFadeAnim</include>
                    <include>PlayerVideoMediaFlags</include>
                    <include>PlayerAudioMediaFlags</include>
                    <include>PlayerAspectMediaFlags</include>
                    <include>PlayerRatingMediaFlags</include>
                </control>
                
                <control type="grouplist" id="1">
                    <description>Live TV Data Labels</description>
                    <top>267</top>
                    <width>1192</width>
                    <orientation>horizontal</orientation>
                    <visible>VideoPlayer.Content(LiveTV)</visible>
                    <control type="label" id="1">
                        <width min="10" max="300">auto</width>
                        <font>SubMenuArrowFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$LOCALIZE[19210]: [COLOR=MediaInfoItemColor2]$INFO[Pvr.ActStreamClient][/COLOR]</label>
                        <visible>!IsEmpty(Pvr.ActStreamClient)</visible>
                    </control>
                    <include condition="!IsEmpty(Pvr.ActStreamClient)">FullScreenInfoDot</include>
                    <control type="label" id="1">
                        <width min="10" max="300">auto</width>
                        <font>SubMenuArrowFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$LOCALIZE[19006]: [COLOR=MediaInfoItemColor2]$INFO[Pvr.ActStreamDevice][/COLOR]</label>
                        <visible>!IsEmpty(Pvr.ActStreamDevice)</visible>
                    </control>
                    <include condition="!IsEmpty(Pvr.ActStreamDevice)">FullScreenInfoDot</include>                    
                    <control type="label" id="1">
                        <width min="10" max="300">auto</width>
                        <font>SubMenuArrowFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$LOCALIZE[19007]: [COLOR=MediaInfoItemColor2]$INFO[Pvr.ActStreamStatus][/COLOR]</label>
                        <visible>!IsEmpty(Pvr.ActStreamStatus)</visible>
                    </control>
                    <include condition="!IsEmpty(Pvr.ActStreamStatus)">FullScreenInfoDot</include>
                    <control type="label" id="1">
                        <width min="10" max="300">auto</width>
                        <font>SubMenuArrowFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$LOCALIZE[19008]: [COLOR=MediaInfoItemColor2]$INFO[Pvr.ActStreamSignal][/COLOR]</label>
                        <visible>!IsEmpty(Pvr.ActStreamSignal)</visible>
                    </control>
                    <include condition="!IsEmpty(Pvr.ActStreamSignal)">FullScreenInfoDot</include>                    
                    <control type="label" id="1">
                        <width min="10" max="300">auto</width>
                        <font>SubMenuArrowFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$LOCALIZE[19009]: [COLOR=MediaInfoItemColor2]$INFO[Pvr.ActStreamSnr][/COLOR]</label>
                        <visible>!IsEmpty(Pvr.ActStreamSnr)</visible>
                    </control>
                    <include condition="!IsEmpty(Pvr.ActStreamSnr)">FullScreenInfoDot</include>
                    <control type="label" id="1">
                        <width min="10" max="300">auto</width>
                        <font>SubMenuArrowFont</font>
                        <textcolor>MediaInfoItemColor</textcolor>
                        <shadowcolor>ShadowColor</shadowcolor>                            
                        <label>$LOCALIZE[19015]: [COLOR=MediaInfoItemColor2]$INFO[Pvr.ActStreamEncryptionName][/COLOR]</label>
                        <visible>!IsEmpty(Pvr.ActStreamEncryptionName)</visible>
                    </control>
                </control>
            </control>

            <control type="image" id="1">
                <description>Cover</description>
                <left>857</left>
                <top>90</top>
                <width>343</width>
                <height>169</height>
                <texture diffuse="covers/player-media-cover-diffuse.png">$VAR[ClearImageOSD]</texture>
                <aspectratio aligny="center" align="center">keep</aspectratio>
                <animation effect="slide" end="0,18" condition="Skin.HasSetting(ShowClearArtOSD) + [[VideoPlayer.Content(Episodes) + !IsEmpty(Player.Art(tvshow.clearart))] | [VideoPlayer.Content(Movies) + !IsEmpty(Player.Art(clearart))]]">Conditional</animation>
            </control>
        </control>

Thanks for fast response. Smile

I had a skin with info displayed at the start of videos around a year ago. But I do not know if it was DialogFullScreenInfo or just a solution like yours to include info in VideoFullScreen.

Anyway - this solution works perfectly for me. Overlapping is not a problem since they both are identical and I need this info when playlist is playing.
Reply
(2015-01-24, 08:22)Thales Wrote: Hey Gade. Got 2 quick questions for.

1. How does the Random and Last Items script work? I was hoping the script would just add a "Play Random Movie" button somewhere, but I don't see anything like that anywhere. I tried reading through some of his thread about it, but I still don't really understand how it is supposed to work. How do I get it to play a random movie?

Hi Thales.

The script.randomandlastitems is used to display info from playlists in the home screen. In Rapier it is used for custom categories, when adding a widget from a movie, episode or music playlist.

(2015-01-24, 08:22)Thales Wrote: 2. Do you have any plans on supporting Phil's extendedinfo script? Specifically the portion that shows an actor's biography and filmography when clicking on them from the cast list. I'm thinking a simple info window would fit pretty well with the rest of the interface. Maybe the actors photo top left, the IMDB bio under the photo and then the IMBD filmography list on the right side. Nothing too fancy.

Yup, you bet, already made plans for this.

Although it requires quite a lot of work, so it will take some time to implement.
Reply
(2015-01-24, 11:46)Baylor Wrote: Thanks for fast response. Smile

I had a skin with info displayed at the start of videos around a year ago. But I do not know if it was DialogFullScreenInfo or just a solution like yours to include info in VideoFullScreen.

Anyway - this solution works perfectly for me. Overlapping is not a problem since they both are identical and I need this info when playlist is playing.

Hi Baylor.

Great to hear that it works for you.

You can adjust the time the info is displayed by editing
Code:
!IntegerGreaterThan(Player.Time,08)
to any value you like - now it is 8 seconds.

Remember, that each time the skin updates, the custom xml code edits are overwritten. And like I always write, I strongly encourage to keep the skin updates at all times.
Reply
Ah, my bad about the randomandlastitems script. I kept seeing "random" everywhere in that thread and thought it was used to play a random movie.

I did find script.randommovie that will do it and I'm going to try to add it.

He gives these instructions for adding a button to the Movie sub menu. (It is at the very end of the code.) If you don't mind me asking a coding question, can you point me to the file that contains the HomeSubMenuMovies section he is talking about? His example is from a different skin and I don't see the "IncludesHomeMenuItems.xml" file in the Rapier folder.

With a quick look, do you see anything with his button code that might be a problem with Rapier? Like maybe the button ID # or the use of "HomeSubEnd.png"? (Have no idea what that image ID or file is used for.)

------

"Hi, you could add it to the Movie sub-menu on the home screen by editing the IncludesHomeMenuItems.xml located in the 720p folder. Search for the section named <include name="HomeSubMenuMovies"> and add a new button there.."


Code:
<include name="HomeSubMenuMovies">
        <control type="image" id="90161">
            <width>35</width>
            <height>35</height>
            <texture border="0,0,0,3" flipx="true">HomeSubEnd.png</texture>
        </control>
        <control type="button" id="90162">
            <include>ButtonHomeSubCommonValues</include>
            <label>31328</label>
            <onclick>ActivateWindow(Videos,RecentlyAddedMovies,return)</onclick>
        </control>
        <control type="button" id="90163">
            <include>ButtonHomeSubCommonValues</include>
            <label>369</label>
            <onclick>ActivateWindow(Videos,MovieTitles,return)</onclick>
        </control>
        <control type="button" id="90164">
            <include>ButtonHomeSubCommonValues</include>
            <label>135</label>
            <onclick>ActivateWindow(Videos,MovieGenres,return)</onclick>
        </control>
        <control type="button" id="90165">
            <include>ButtonHomeSubCommonValues</include>
            <label>652</label>
            <onclick>ActivateWindow(Videos,MovieYears,return)</onclick>
        </control>
        <control type="button" id="90166">
            <include>ButtonHomeSubCommonValues</include>
            <label>344</label>
            <onclick>ActivateWindow(Videos,MovieActors,return)</onclick>
        </control>
        <!-- Random Movie Mod -->
        <control type="button" id="90167">
            <include>ButtonHomeSubCommonValues</include>
            <label>Random Movie</label>
            <onclick>RunScript(script.randommovie,prompt=True)</onclick>
            <visible>System.HasAddon(script.randommovie)</visible>
        </control>        
        <control type="image" id="90168">
            <width>35</width>
            <height>35</height>
            <texture border="0,0,0,3">HomeSubEnd.png</texture>
        </control>
    </include>
Reply
(2015-01-25, 00:22)Thales Wrote: Ah, my bad about the randomandlastitems script. I kept seeing "random" everywhere in that thread and thought it was used to play a random movie.

I did find script.randommovie that will do it and I'm going to try to add it.

He gives these instructions for adding a button to the Movie sub menu. (It is at the very end of the code.) If you don't mind me asking a coding question, can you point me to the file that contains the HomeSubMenuMovies section he is talking about? His example is from a different skin and I don't see the "IncludesHomeMenuItems.xml" file in the Rapier folder.

With a quick look, do you see anything with his button code that might be a problem with Rapier? Like maybe the button ID # or the use of "HomeSubEnd.png"? (Have no idea what that image ID or file is used for.)

------

"Hi, you could add it to the Movie sub-menu on the home screen by editing the IncludesHomeMenuItems.xml located in the 720p folder. Search for the section named <include name="HomeSubMenuMovies"> and add a new button there.."

Hi Thales.

Pretty nice script Smile

The includes and xml files he mentions are very specific to the skin. Rapier uses other includes and other xml files.

But I don't really see any reason at all to edit the xml's. Just add the script to your favourites and add that favourite as a custom category or submenu. Once you click it, you get to choose between watched/unwatched movies and if you want to select a genre.

That's it Smile
Reply
Thanks for the quick answer. Such personal service!

I liked your suggestion of how to add it to a custom menu. I was thinking it would be great to just scroll over to "Random Movie" and press play. (I can never decide on what to watch when staring at pages and pages of movie posters.)

Unfortunately, I haven't been able to figure out how to add a script to Favourites yet. I see the option under the context menu when trying it to items in the Add-ons menu with the "program" add-ons if you know what I mean, like Cinema Experience, Artwork Downloader, and Video Extras. But the randommovie script only shows up in the Enabled Add-ons section under Helper something or another. There the context menu doesn't show a favourites options.

Is there something that needs to be added to the script in order to let it be added to favourites? I tried looking around for that, but there is a script called Favourites and all the searching I did just sent me to that. Couldn't find a way to add a script TO the Favourites menu.

Anyway, I really wanted to try it out, so spent some time going through some of the xml files and eventually found the sub menu sections in "includes_Home.xml". I just replaced the Directors onclick and visible lines with the ones from the sample code and it worked! I now have a random movie button in the sub menu.

The script seems to work great. Click the button and a window comes up to include watched movies or not and then a window asking for genres or not and then a random movie plays. It even uses the external player. Good stuff.

I'd still rather have it as custom menu on the main page, but this is good enough until I can figure out how to add the script as a favourite. Probably not enough interest in random movies to go to the trouble of adding it officially. Just wanted to mention that it is pretty easy to add manually if someone else wanted to try it too.
Reply
Which version of the script do you use?

If you use the latest (0.1.1), you can find the script in program add-ons and add it to your favourites in that section.

Custom edits of the xml files are overwritten each time the skin is updated, so the above solution is by far the one I recommend.
Reply
Hi Gade, great update recently... loving all the new stuff Big Grin

I do have a request though for your consideration...

Movie trailers... I have trailers for all my films and I can remember there being an option in some other skins to play them in a window. Confluence does this by default as far as I can tell but I can't seem to find an option to do this in Rapier?

The reason I ask is this... Although nearly all movies now have had a cosmetic update and released as Blu-ray quality, the trailers are more usually the original release downloaded from Youtube. Playing these low res trailers fullscreen on a 50' TV really doesn't do them justice so a windowed mode would be more appropriate.

What do you think?

Keep up the awesome work by the way Big Grin
Reply
Hi blondeshanks.

Great you like the update Smile

Confluence has a setting (not default) to play trailers in a window when in the movie information window. Is that what you mean?

Do you only play trailers using the movie information window or do you use the context menu in the library?

I could easily add something like that.
Reply
Hi, quick bug report: after hitting the "update library" button, it switches to "stop scanning", but the button does not return to "update library" after the update is complete. The button is still usable though.

I'm using Rapier 7.2.0 on kodibuntu helix, and I have the top bar set to auto hide.


PS: Great to be using Rapier again, I've never found a view as good as List Info 2 : )
Reply
(2015-01-25, 12:34)Gade Wrote: Hi blondeshanks.

Great you like the update Smile

Confluence has a setting (not default) to play trailers in a window when in the movie information window. Is that what you mean?

Do you only play trailers using the movie information window or do you use the context menu in the library?

I could easily add something like that.
I use both ways so both would be appreciated. No hurry if you do decide to work this in to Rapier...
Reply
(2015-01-25, 14:53)rickles Wrote: Hi, quick bug report: after hitting the "update library" button, it switches to "stop scanning", but the button does not return to "update library" after the update is complete. The button is still usable though.

I'm using Rapier 7.2.0 on kodibuntu helix, and I have the top bar set to auto hide.


PS: Great to be using Rapier again, I've never found a view as good as List Info 2 : )

Hi rickles.

Thanks a bunch for the nice words.

I really appreciate the bug report - that's what makes the skin better Smile

The functions of the button works, but the labels and textures are now fixed and this will be included in the next update.

Cheers
Gade
Reply
(2015-01-25, 14:59)blondeshanks Wrote:
(2015-01-25, 12:34)Gade Wrote: Hi blondeshanks.

Great you like the update Smile

Confluence has a setting (not default) to play trailers in a window when in the movie information window. Is that what you mean?

Do you only play trailers using the movie information window or do you use the context menu in the library?

I could easily add something like that.
I use both ways so both would be appreciated. No hurry if you do decide to work this in to Rapier...

I have made the option as a skin setting in Media -> Videos.

It is only available in the movie information window, as it would not work properly in the library ans require too much work to implement.

Please let me know what you think by installing this manual update of Rapier.
Reply
(2015-01-25, 11:54)Gade Wrote: If you use the latest (0.1.1), you can find the script in program add-ons and add it to your favourites in that section.

Of course, that was it. I saw someone in their thread say to use the "preEden" version of the script for Gotham, so that was what I was using for Helix. Just installed the one you linked to and I was able to add it to favourites with no problem and made a custom home menu item for it. Like you said, that is going to be a lot better since it won't break with each update you do.

So thanks for the link. Can't wait to see what you do with the extendedinfo script and the actor info.
Reply
Sounds great - glad to help Smile
Reply
  • 1
  • 6
  • 7
  • 8(current)
  • 9
  • 10
  • 23

Logout Mark Read Team Forum Stats Members Help
[RELEASE] Rapier 7.9.0 for Kodi 14.x Helix [DEPRECATED]2