Skip to content

Releases: 1ForeverHD/TopbarPlus

v3.0.2

05 Apr 18:26
Compare
Choose a tag to compare

Changes

v3.0.1

01 Apr 11:21
Compare
Choose a tag to compare

Changes

  • Introduced fromSource - this is where the behaviour originated, values include "User", "OneClick", "AutoDeselect", "HideParentFeature", "Overflow" https://devforum.roblox.com/t/post/1017485/1383
  • Introduced sourceIcon - the icon (often itself) which is responsible for performing the action
  • Changed icon:select(fromInput) to icon:select(fromSource, sourceIcon)
  • Changed icon:deselect(fromInput) to icon:deselect(fromSource, sourceIcon)
  • fromSource and sourceIcon are also now passed in events selected, deselected and toggled
  • Fixed Classic Theme Y offset #97 offset https://devforum.roblox.com/t/post/1017485/1356
  • Fixed rounded corners https://devforum.roblox.com/t/post/1017485/1359
  • Improved wally support (removed some incorrect files, cleaned up, etc)
  • Updated playground from Script with Local Context to just a LocalScript

v3.0.0

28 Mar 12:23
Compare
Choose a tag to compare

Say hello to v3.0.0! 👋

🖼️ A design overhaul to match the new topbar...

Icons, captions, dropdowns, menus... everything! v3 aims to mirror the topbar so you can seamlessly build upon it.

👴 ...but with inbuilt support for the old topbar

Not all clients see the new topbar... yet. v3 solves this by listening for differences and adapting to a classic design accordingly.

📝 A complete codebase rewrite and re-organization

Readability and performance have been the driving reasons behind this. By outsourcing logic to UIComponents and reorganizing instances into more appropriate containers the Icon and IconController have collectively shrunk from >3000 lines of code to ~1000.

🎨 An easier system to modify icon appearance and behavior

You're no longer limited to predefined settings... you can modify... anything! 🥳 The way you modify icons has also changed to be more straightforward. More info on that here.

📦 TopbarPlus is now a package

No more faff when updating... just right-click the package, update and bam, all set! 💪 More details here.

🗃️ TopbarPlus now supports Wally

You can find that here!

🎮 Improved support for gamepads and mobile devices

Pretty much the title, lots of small improvements to make navigating icons on different devices that much easier.

⚖️ Overflow upgrade

Overflows now become horizontal menus instead of vertical dropdowns. More about that here.

📖 Brand new documentation

Happy reading! You can find the v3 documentation here.

📝 MIT -> Mozilla Public License v2.0

You can use TopbarPlus free of charge. All you need to do is provide credit back to this resource (such as link to its devforum post) and to open source any significant changes you make to the package.

❤️ Backwards compatibility with the majority of methods from v2

The majority of v2 methods and features have been built into v3 to make for an easy transition. You can find a full breakdown of these changes below.

Changes since v2.9.1

Note: 'Changed' means the methods behavior was altered in some way (such as its parameters, how it functions, etc) while 'Renamed' means only the name or module changed.

  • Added method Icon:getInstance
  • Added method Icon:modifyChildTheme
  • Added method Icon:setTextSize
  • Added method Icon:setTextFont
  • Added method Icon:oneClick
  • Added method Icon:setCaptionHint
  • Added variable Icon.highlightKey
  • Changed method icon:setTheme to icon:modifyTheme
  • Changed method icon:setImageYScale to icon:setImageScale
  • Changed method icon:setXSize to icon:setWidth
  • Changed method icon:give to icon:addToJanitor
  • Changed method icon:join to icon:joinDropdown and icon:joinMenu
  • Changed event icon.hoverStarted to icon.viewingStarted
  • Changed event icon.hoverEnded to icon.viewingEnded
  • Changed function IconController.setGameTheme to Icon.modifyBaseTheme
  • Changed functionIconController.getIcons to Icon.getIcons
  • Changed functionIconController.getIcon to Icon.getIcon
  • Renamed method icon:disableStateOverlay to icon:disableOverlay
  • Renamed method icon:setLeft to icon:align("Left")
  • Renamed method icon:setMid to icon:align("Center")
  • Renamed method icon:setRight to icon:align("Right")
  • Renamed function IconController.setDisplayOrder to Icon.setDisplayOrder
  • Renamed function IconController.setTopbarEnabled to Icon.setTopbarEnabled
  • Removed method icon:setTip (explanation on this here)
  • Removed method icon:set
  • Removed method icon:get
  • Removed method icon:getToggleState
  • Removed method convertLabelToNumberSpinner
  • Removed method icon:setLabelYScale
  • Removed method icon:setBaseZIndex
  • Removed method icon:setSize
  • Removed method icon:setYSize
  • Removed method icon:setTopPadding
  • Removed event icon.userSelected
  • Removed event icon.userDeselected
  • Removed event icon.userToggled
  • Removed event icon.dropdownOpened
  • Removed event icon.dropdownClosed
  • Removed event icon.menuOpened
  • Removed event icon.menuClosed
  • Removed property icon.accountForWhenDisabled
  • Removed property icon.hovering
  • Removed property icon.tipText
  • Removed property icon.captionText
  • Removed property icon.dropdownIcons
  • Removed property icon.menuIcons
  • Removed property icon.dropdownOpen
  • Removed property icon.menuOpen
  • Removed property icon.topPadding
  • Removed property icon.targetPosition
  • Removed function IconController.setGap
  • Removed function IconController.setLeftOffset
  • Removed function IconController.setRightOffset
  • Removed function IconController.updateTopbar
  • Removed function IconController.clearIconOnSpawn (v3 now checks if your scripts are located within a ScreenGui with 'ResetOnSpawn' set to true and responds accordingly. This was probably the most asked about thing in v2 so super happy to finally have this resolved!)
  • Removed function IconController.disableHealthbar
  • Removed function IconController.disableControllerOption
  • Removed all IconController properties
  • Removed module IconController

Contributors

@xhayper for multiple improvements to the repository, help introducing wally, code cleanup, and ongoing help with luau typechecks and luau autocompletes
@iamEvanYT for the initial hybrid support for the new topbar
@LordMerc for help with the documentation and general feedback
@ValiantWind for help with testing and feedback
@lolmansReturn for help retrieving values in features such as captions
@medallyon for help setting up Wally
@CAZ-H for help with clamping objects within screen bounds
@howmanysmall for the package Janitor
@stravant for the package GoodSignal

Thank you to the many contributors of v3.0.0 and everyone who has provided feedback and reports over the last three months 🙏

v2.9.1

19 Oct 19:35
Compare
Choose a tag to compare

Improved

  • Improved the size adapting of captions and tips when their texts are changed via localization
  • Improved the size adapting of icon labels, in particular for the selected state

Fixed

  • Fixed a bug preventing the icon cell resizing when deselected for icons with an image but only selected text

v2.9.0

08 Oct 17:30
Compare
Choose a tag to compare

Added

  • Added icon:debounce(seconds). This is shorthand for icon:lock() task.wait(seconds) icon:unlock()
  • Added IconController.disableControllerOption(bool)
  • Added controller selection support

Improved

  • Improved the scrolling behaviour of menus and dropdowns (scrolling is no longer blocked by other scrolling items)
  • Improved menu and dropdown selection when using a controller so that menu/dropdown icons are no longer skipped when the maxIconsBeforeScroll is less than the total icons within the feature
  • Updated internals of localization support so that only the source language is scraped

v2.8.0

29 Sep 13:33
Compare
Choose a tag to compare

Added

  • Added Localization compatability. Icons will now update their properties (such as width) when new localized text is found or detected. This also accounts for switching languages live in-game. This resolves #38
  • Added RichText compatability to Captions and Tips
  • Added IconController.voiceChatEnabled (default false) which now must be set to true by game developers if their experience uses VoiceChat This is also accompanied by a warning to inform developers of this. This resolves the issue outlined here: https://devforum.roblox.com/t/topbarplus-v277/1017485/681?u=foreverhd
  • Added icon:autoDeselect(bool) as a shorthand alternative to :setProperty("deselectWhenOtherIconSelected", bool)
  • Added icon:call(func) as a more appropriate alternative to icon:give(object)
  • Added icon:setXSize(XOffset, iconState)
  • Added icon:setYSize(YOffset, iconState)
  • Added forcedIconSizeX and forcedIconSizeY theme settings
  • Added icon.userSelected event
  • Added icon.userDeselected event
  • Added icon.userToggled event
  • Added a variable for script and script.Parent to Icon and IconController. This resolves #47

Improved

  • Updated Contributing docs page to mention that you don't need to open issues for smaller contributions like single-line fixes
  • Improved the internal behaviour of :setSize
  • Improved the behaviour of :lock so that the overlaps now disappear and so that :select and :deselect can still work (now only the user-input is disabled). This resolves #42

Fixed

Removed

  • Removed the documentation within Icon and IconController, and removed the module-docs.yml action. This was not as beneficial as first assumed.
  • Removed forcedIconSize theme setting

v2.7.7

26 Sep 11:10
Compare
Choose a tag to compare

Added

  • Added basic compatability for VR devices. This includes different behaviour for when the Roblox menu is toggled. Credit to @cl1ents for help with this.

Improved

  • Improved RichText compatability so that icons now account for the ContentText instead of Text when determining width.
  • Updated the third-party documents page which now explains that third-party applications no-longer need to do anything. TopbarPlus now handles multi-package logic internally.

Fixed

  • Fixed some third-party require logic within Icon and IconController. If more than one TopbarPlus package is required within an experience the first-required package will become the 'lead' package. No other package will run afterwards, only a reference to the lead package is returned. This prevents two-packages from running at once (such as when using HD Admin, SuperBiz Catalog, etc which also have their own TopbarPlus package).
  • Fixed additional third-party require logic that would occur when the IconController was required before the Icon.

v2.7.6

24 May 15:59
Compare
Choose a tag to compare

Added

  • Checks to account for the new obtrusive 'Voice Chat Beta' icon.
  • Mouse-click detection for controller mode hide/show toggle. Credit to @Lucke0051 for this.

Fixed

  • A bug with overflows caused by changing the Workspace.CurrentCamera. Credit to @Lucke0051 for this.

v2.7.5

17 Aug 09:38
Compare
Choose a tag to compare

Improved

  • The roblox hover cursor now appears when hovering over Icon buttons.

v2.7.4

09 Aug 11:27
Compare
Choose a tag to compare

Fixed

  • A bug with ResetOnRespawn where the :give() function would call right away and when destroyed for functions, which only triggered after two resets
  • Items like captions and tips not being destroyed when active with ResetOnSpawn.

Improved

  • The fake healthbar behaviour, so that it appears now only when an icon is set to the right.
  • Reduced the likelihood of two healthbars appearing simultaneously.