Quantcast
Download
(725 Kb)
Download
Updated: 09-12-17 06:12 AM
Pictures
File Info
Compatibility:
Shadows of Argus (7.3.0)
Tomb of Sargeras (7.2.0)
Return to Karazhan (7.1.5)
Legion (7.0.3)
Updated:09-12-17 06:12 AM
Created:03-30-10 05:29 AM
Downloads:177,318
Favorites:292
MD5:
7.3.0

Qulight UI  Popular! (More than 5000 hits)

Version: 6.2.5
by: Qulight, Warrior-

NEW Site UI

Qulight UI in Action(Youtube)

Install:

1. Clean your "Interface/AddOns folder;
2. Unpack this archive into your WOW folder/Interface/Addons;

/ru
1. Удалить содержимое "Interface/AddOns";
2. Распаковать архив в WoW/Interface/Addons;

Slash commands:

/rl, .кд; - Reload UI;
/ticket, /gm, /гм; - GM frame.
/hb - binding buttons on mouseover.
/wf - Quest tracker mover.
/frame - Command to grab frame information when mouseing over a frame.

/config - In-game UI config.
/ui - ingame command for change all UI positions.
/ui reset - Set default UI positions.

AddOns:

QulightUI - It is the main addon and it includes - dNamePlates, Stuffing, FreebTip, m_Buff, omniCC, Class Timer, rActionBarStyler, Datatext(Bags, Durability, Friends, Gold, Guild, System, Time), qMinimap, qChat, ncHoverBind, oUF+oUF_Qulight, Filger, aLoad, MarkBar, Mapster, qChatBar, raidUtility, tullaRange, m_Loot, ncCooldownFlash, aMail, Reminder, RaidBuffReminder, BigWigs_skin, DBM_skin, DXE_skin, KLE_skin, Omen_skin, PallyPower_skin, Quartz_skin, Recount_skin, Skada_skin.

Qulight_ConfigUI - in game configuration.

Aurora - is an addon which reskins the default Blizzard frames to a smooth, minimalistic theme which is consistent across the entire UI.

Recount, Omen, KLE, DXE, BigWigs, Quartz, Skada, DBM, Pally Power are NOT included in this UI package, it will simply reskin the addon if you have it running, you need to download and update the addon on your own.

Credits:

Monolit, Shestak, Hanomi, Alza, AlleyKat, Fernir, affli, Nightcracker, Allez, haste, Zork, Tekkub, Tuller, Freebaser, Haleth, drakull, P3lim, Dawn, Tukz, Warrior

Optional Files (0)


Archived Files (13)
File Name
Version
Size
Author
Date
6.2.4
738kB
Qulight
08-30-17 08:54 AM
6.2.3a
714kB
Qulight
06-26-17 11:28 AM
6.2.3
690kB
Qulight
06-15-17 05:56 AM
6.2.1
688kB
Qulight
04-26-17 12:12 AM
6.2
694kB
Qulight
03-30-17 01:16 AM
6.1.9a
694kB
Qulight
03-30-17 12:32 AM
6.1.9
694kB
Qulight
03-29-17 12:45 AM
6.1.8a
694kB
Qulight
01-27-17 10:37 PM
6.1.8
711kB
Qulight
01-25-17 07:34 AM
6.1.7
688kB
Qulight
01-12-17 04:53 AM
6.1.6
713kB
Qulight
01-11-17 02:38 AM
6.1.5
585kB
Qulight
01-01-17 03:32 AM
6.1.4
701kB
Qulight
12-31-16 12:13 AM


Post A Reply Comment Options
Unread 10-30-16, 08:49 AM  
GreenKed
A Kobold Labourer

Forum posts: 0
File comments: 4
Uploads: 0
Originally Posted by Warrior-
Баг, перезалил
С друидом все по прежнему грустно.
Report comment to moderator  
Reply With Quote
Unread 10-30-16, 02:17 AM  
renat.zinatulin
A Kobold Labourer

Forum posts: 0
File comments: 1
Uploads: 0
Originally Posted by Warrior-
Originally Posted by fulcrum
Originally Posted by Warrior-
Originally Posted by jostikomsk
Будет обновление под 7.1?
Уже)
Странно - на странице аддона пишет версия 6.1.2, а при попытке качать файл отдаётся 6.1.1..
Баг, перезалил
Спасибо за самую лучшую сборку аддонов!
Кви уже не занимается сборкой?
Report comment to moderator  
Reply With Quote
Unread 10-27-16, 01:47 PM  
Warrior-
A Kobold Labourer

Forum posts: 0
File comments: 36
Uploads: 0
Originally Posted by fulcrum
Originally Posted by Warrior-
Originally Posted by jostikomsk
Будет обновление под 7.1?
Уже)
Странно - на странице аддона пишет версия 6.1.2, а при попытке качать файл отдаётся 6.1.1..
Баг, перезалил
Report comment to moderator  
Reply With Quote
Unread 10-27-16, 09:36 AM  
fulcrum
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Originally Posted by Warrior-
Originally Posted by jostikomsk
Будет обновление под 7.1?
Уже)
Странно - на странице аддона пишет версия 6.1.2, а при попытке качать файл отдаётся 6.1.1..
Report comment to moderator  
Reply With Quote
Unread 10-26-16, 05:43 AM  
Warrior-
A Kobold Labourer

Forum posts: 0
File comments: 36
Uploads: 0
Originally Posted by jostikomsk
Будет обновление под 7.1?
Уже)
Report comment to moderator  
Reply With Quote
Unread 10-25-16, 08:45 PM  
jostikomsk
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
Будет обновление под 7.1?
Report comment to moderator  
Reply With Quote
Unread 09-27-16, 05:06 AM  
Triksil
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Combo Points Bug

В первую очередь хотелось бы поблагодарить за интерфейс!

Но вот у меня вопрос по Combo Points я даже .lua файлы разбирал и не могу понять почему комбпо поинты не апдейтятся, баг...
Вроде все по уму, но например функция Update вообще не юзайется... Я не очень розбираюсь в lua криптах к сожалению

cppoints.lua


Code:
local parent, ns = ...
local oUF = ns.oUF

local GetComboPoints = GetComboPoints
local MAX_COMBO_POINTS = MAX_COMBO_POINTS

local Update = function(self, event, unit)
	if(unit == 'pet') then return end

	local cpoints = self.CPoints
	if(cpoints.PreUpdate) then
		cpoints:PreUpdate()
	end

	local cp
	if(UnitHasVehicleUI'player') then
		cp = GetComboPoints('vehicle', 'target')
	else
		cp = GetComboPoints('player', 'target')
	end

	for i=1, MAX_COMBO_POINTS do
		if(i <= cp) then
			cpoints[i]:Show()
		else
			cpoints[i]:Hide()
		end
	end

	if(cpoints.PostUpdate) then
		return cpoints:PostUpdate(cp)
	end
end

local Path = function(self, ...)
	return (self.CPoints.Override or Update) (self, ...)
end

local ForceUpdate = function(element)
	return Path(element.__owner, 'ForceUpdate', element.__owner.unit)
end

local Enable = function(self)
	local cpoints = self.CPoints
	if(cpoints) then
		cpoints.__owner = self
		cpoints.ForceUpdate = ForceUpdate

		self:RegisterEvent('UNIT_COMBO_POINTS', Path, true)
		self:RegisterEvent('PLAYER_TARGET_CHANGED', Path, true)

		for index = 1, MAX_COMBO_POINTS do
			local cpoint = cpoints[index]
			if(cpoint:IsObjectType'Texture' and not cpoint:GetTexture()) then
				cpoint:SetTexture[[Interface\ComboFrame\ComboPoint]]
				cpoint:SetTexCoord(0, 0.375, 0, 1)
			end
		end

		return true
	end
end

local Disable = function(self)
	local cpoints = self.CPoints
	if(cpoints) then
		self:UnregisterEvent('UNIT_COMBO_POINTS', Path)
		self:UnregisterEvent('PLAYER_TARGET_CHANGED', Path)
	end
end

oUF:AddElement('CPoints', Path, Enable, Disable)
Last edited by Triksil : 09-27-16 at 07:10 AM.
Report comment to moderator  
Reply With Quote
Unread 09-17-16, 03:19 PM  
Dwnldedskill
A Kobold Labourer

Forum posts: 0
File comments: 10
Uploads: 0
Errors

Hi - I'm on the US client and the unit frames don't load. OUF doesn't work right, everything else looks ok, but there's no unit frames. Clean install with deleted WTF folder.

Here's one of the errors, and the one I suspect is stopping OUF from displaying:
Interface\AddOns\QulightUI\Addons\UF\lib.lua:1422: Attempted to use invalid tag [pereclipse].

Disabling the druid eclipse bar fixed the OUF not displaying.
Last edited by Dwnldedskill : 09-18-16 at 09:45 AM.
Report comment to moderator  
Reply With Quote
Unread 09-14-16, 09:20 AM  
SlashDot
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 11
Uploads: 2
Вот такая ошибка. (инсталяция чистая, WTF создана заново)

Message: ...terface\AddOns\QulightUI\Addons\ObjectiveTracker.lua:103: attempt to call method 'Kill' (a nil value)
Time: 09/14/16 18:19:37
Count: 14
Stack: ...terface\AddOns\QulightUI\Addons\ObjectiveTracker.lua:103: in function <...terface\AddOns\QulightUI\Addons\ObjectiveTracker.lua:92>
[C]: in function `AddProgressBar'
..._ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:832: in function <..._ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:735>
..._ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:886: in function <..._ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:880>
..._ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:919: in function `Update'
...zzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua:1060: in function `ObjectiveTracker_Update'
...zzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua:663: in function <...zzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua:661>

Locals: self = <table> {
OnFreeBlock = <function> defined @Interface\AddOns\Blizzard_ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:30
lineTemplate = "BonusObjectiveTrackerLineTemplate"
freeProgressBars = <table> {
}
FreeProgressBar = <function> defined @Interface\AddOns\Blizzard_ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:1083
Update = <function> defined @Interface\AddOns\Blizzard_ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:896
OnFreeLine = <function> defined @Interface\AddOns\Blizzard_ObjectiveTracker\Blizzard_BonusObjectiveTracker.lua:65
blockTemplate = "BonusObjectiveTrackerBlockTemplate"
blockPadding = 3
usedBlocks = <table> {
}
oldContentsHeight = 97.859331130981
fromHeaderOffsetY = -8
headerText = "Дополнительные задачи"
AddProgressBar = <function> defined =[C]:-1
hasSkippedBlocks = false
blockType = "ScrollFrame"
contentsAnimHeight = 0
contentsHeight = 0
blockOffsetY = -6
DefaultHeaderText = "Дополнительные задачи"
updateReasonEvents = 309
usedProgressBars = <table> {
}
freeBlocks = <table> {
}
Header = <unnamed> {
}
ShowWorldQuests = false
freeLines = <table> {
}
rewardsFrame = ObjectiveTrackerBonusRewardsFrame {
}
blockOffsetX = -20
updateReasonModule = 4096
}
block = <unnamed> {
0 = <userdata>
lines = <table> {
}
id = 39279
currentLine = <unnamed> {
}
module = <table> {
}
ScrollContents = <unnamed> {
}
state = "PRESENT"
lineWidth = 221.36296319962
posIndex = 1
TrackedQuest = <unnamed> {
}
used = true
AnimIn = <unnamed> {
}
height = 64.859331130981
AnimOut = <unnamed> {
}
}
line = <unnamed> {
0 = <userdata>
Glow = <unnamed> {
}
IconAnchor = <unnamed> {
}
Sheen = <unnamed> {
}
Text = <unnamed> {
}
ProgressBar = <unnamed> {
}
width = 221.36296319962
CheckFlash = <unnamed> {
}
used = true
Dash = <unnamed> {
}
objectiveKey = 1
Icon = <unnamed> {
}
dashStyle = 1
}
progressBar = <unnamed> {
0 = <userdata>
Flare1 = <unnamed> {
}
SmallFlare1 = <unnamed> {
}
FullBarFlare2 = <unnamed> {
}
questID = 39279
FullBarFlare1 = <unnamed> {
}
block = <unnamed> {
}
AnimValue = 10
height = 38
SmallFlare2 = <unnamed> {
}
Flare2 = <unnamed> {
}
Bar = <unnamed> {
}
}
bar = <unnamed> {
0 = <userdata>
Label = <unnamed> {
}
Sheen = <unnamed> {
}
BarBG = <unnamed> {
}
BarGlow = <unnamed> {
}
Starburst = <unnamed> {
}
BarFrame = <unnamed> {
}
BarFrame3 = <unnamed> {
}
BarFrame2 = <unnamed> {
}
AnimIn = <unnamed> {
}
Icon = <unnamed> {
}
IconBG = <unnamed> {
}
}
icon = <unnamed> {
0 = <userdata>
}
dummy = <function> defined @Interface\AddOns\QulightUI\Addons\ObjectiveTracker.lua:96
label = <unnamed> {
0 = <userdata>
}
(*temporary) = nil
(*temporary) = <unnamed> {
0 = <userdata>
}
(*temporary) = "attempt to call method 'Kill' (a nil value)"
Report comment to moderator  
Reply With Quote
Unread 09-12-16, 11:33 AM  
BigTopa
A Kobold Labourer

Forum posts: 0
File comments: 3
Uploads: 0
Новое обновление не исправило предыдущих ошибок, а жаль!

Originally Posted by BigTopa
Originally Posted by Warrior-
Конкретно когда это происходит?
Когда кликаю на любую из профессий (портняжное дело, кулинария, археология, первая помощь и пр.). Любая на каждом персонаже, что с панели, что с основного окна.

И еще вот такое при входе на персонажей ниже 80 уровня (хз с чем это связанно).
Message: Interface\FrameXML\ChatFrame.lua:3955: attempt to perform arithmetic on a nil value
Time: 08/26/16 02:30:55
Count: 1
Stack: Interface\FrameXML\ChatFrame.lua:3637: in function `ChatEdit_ResetChatType'
Interface\FrameXML\ChatFrame.lua:3709: in function <Interface\FrameXML\ChatFrame.lua:3693>
Interface\FrameXML\ChatFrame.lua:3719: in function `ChatEdit_DeactivateChat'
Interface\FrameXML\InterfaceOptionsPanels.lua:912: in function `InterfaceOptionsSocialPanelChatStyle_SetChatStyle'
Interface\FrameXML\InterfaceOptionsPanels.lua:851: in function <Interface\FrameXML\InterfaceOptionsPanels.lua:838>

Locals: self = ChatFrame1EditBox {
0 = <userdata>
headerSuffix = ChatFrame1EditBoxHeaderSuffix {
}
focusLeft = ChatFrame1EditBoxFocusLeft {
}
focusRight = ChatFrame1EditBoxFocusRight {
}
tabCompleteTableIndex = 1
chatFrame = ChatFrame1 {
}
addSpaceToAutoComplete = true
addHighlightedText = true
focusMid = ChatFrame1EditBoxFocusMid {
}
header = ChatFrame1EditBoxHeader {
}
}
Report comment to moderator  
Reply With Quote
Unread 08-29-16, 07:55 PM  
jostikomsk
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
эти ошибки постоянно выпрыгивают бесит очень сильно
Report comment to moderator  
Reply With Quote
Unread 08-25-16, 05:22 PM  
BigTopa
A Kobold Labourer

Forum posts: 0
File comments: 3
Uploads: 0
Originally Posted by Warrior-
Конкретно когда это происходит?
Когда кликаю на любую из профессий (портняжное дело, кулинария, археология, первая помощь и пр.). Любая на каждом персонаже, что с панели, что с основного окна.

И еще вот такое при входе на персонажей ниже 80 уровня (хз с чем это связанно).
Message: Interface\FrameXML\ChatFrame.lua:3955: attempt to perform arithmetic on a nil value
Time: 08/26/16 02:30:55
Count: 1
Stack: Interface\FrameXML\ChatFrame.lua:3637: in function `ChatEdit_ResetChatType'
Interface\FrameXML\ChatFrame.lua:3709: in function <Interface\FrameXML\ChatFrame.lua:3693>
Interface\FrameXML\ChatFrame.lua:3719: in function `ChatEdit_DeactivateChat'
Interface\FrameXML\InterfaceOptionsPanels.lua:912: in function `InterfaceOptionsSocialPanelChatStyle_SetChatStyle'
Interface\FrameXML\InterfaceOptionsPanels.lua:851: in function <Interface\FrameXML\InterfaceOptionsPanels.lua:838>

Locals: self = ChatFrame1EditBox {
0 = <userdata>
headerSuffix = ChatFrame1EditBoxHeaderSuffix {
}
focusLeft = ChatFrame1EditBoxFocusLeft {
}
focusRight = ChatFrame1EditBoxFocusRight {
}
tabCompleteTableIndex = 1
chatFrame = ChatFrame1 {
}
addSpaceToAutoComplete = true
addHighlightedText = true
focusMid = ChatFrame1EditBoxFocusMid {
}
header = ChatFrame1EditBoxHeader {
}
}
Last edited by BigTopa : 08-25-16 at 05:40 PM.
Report comment to moderator  
Reply With Quote
Unread 08-25-16, 02:26 PM  
Warrior-
A Kobold Labourer

Forum posts: 0
File comments: 36
Uploads: 0
Конкретно когда это происходит?
Report comment to moderator  
Reply With Quote
Unread 08-25-16, 02:10 PM  
BigTopa
A Kobold Labourer

Forum posts: 0
File comments: 3
Uploads: 0
Приветствую!
После последнего обновления от 25.08 жалуется на Aurora

Message: Interface\AddOns\Aurora\aurora-7.0.3.lua:226: attempt to concatenate local 'frame' (a nil value)
Time: 08/25/16 23:08:58
Count: 1
Stack: ...rface\AddOns\Aurora\AddOns\Blizzard_TradeSkillUI.lua:36: in function `addonModule'
Interface\AddOns\Aurora\aurora.lua:846: in function <Interface\AddOns\Aurora\aurora.lua:742>
[C]: in function `LoadAddOn'
Interface\FrameXML\UIParent.lua:391: in function `UIParentLoadAddOn'
Interface\FrameXML\UIParent.lua:450: in function `TradeSkillFrame_LoadUI'
Interface\FrameXML\UIParent.lua:1453: in function <Interface\FrameXML\UIParent.lua:891>

Locals: rankFrame = <unnamed> {
0 = <userdata>
RankText = <unnamed> {
}
SetStatusBarColor = <function> defined @Interface\AddOns\Aurora\aurora.lua:80
Background = <unnamed> {
}
BorderMid = <unnamed> {
}
BorderLeft = <unnamed> {
}
BorderRight = <unnamed> {
}
Bar = <unnamed> {
}
}
recipeInset = <unnamed> {
0 = <userdata>
InsetBorderBottom = TradeSkillFrameInsetBottomBorder {
}
InsetBorderRight = TradeSkillFrameInsetRightBorder {
}
InsetBorderBottomLeft = TradeSkillFrameInsetBotLeftCorner {
}
InsetBorderTopLeft = TradeSkillFrameInsetTopLeftCorner {
}
InsetBorderBottomRight = TradeSkillFrameInsetBotRightCorner {
}
InsetBorderLeft = TradeSkillFrameInsetLeftBorder {
}
InsetBorderTopRight = TradeSkillFrameInsetTopRightCorner {
}
Bg = TradeSkillFrameBg {
}
InsetBorderTop = TradeSkillFrameInsetTopBorder {
}
}
recipeList = <unnamed> {
0 = <userdata>
SelectedAndForceRecipeIDIntoView = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:451
buttonHeight = 16
OnHeaderButtonClicked = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:103
FindRecipeIndexInCurrentList = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:427
SetSelectedRecipeID = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:460
recipeChangedCallback = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillUI.lua:16
OnUpdate = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:50
FilterBar = <unnamed> {
}
pendingRefresh = true
scrollChild = TradeSkillFrameScrollChild {
}
ForceRecipeIntoView = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:440
IsCategoryCollapsed = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:114
Tabs = <table> {
}
UnlearnedTab = <unnamed> {
}
OnRecipeButtonClicked = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:118
RebuildDataList = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:179
RecipeOptionsMenu = TradeSkillRecipeOptionsMenu {
}
UpdateFilterBar = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:344
SetCategoryCollapsed = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:107
RefreshDisplay = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:401
IsRecipeInCurrentList = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:436
OnDataSourceChanged = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:89
OnLearnedTabClicked = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:129
SetRecipeChangedCallback = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:149
FindBestStarRankLinksForRecipe = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:153
offset = 0
stepSize = 32
update = <function> defined @Interface\AddOns\Blizzard_TradeSkillUI\Blizzard_TradeSkillRecipeList.lua:401
Report comment to moderator  
Reply With Quote
Unread 08-17-16, 12:17 AM  
Kesaien
A Kobold Labourer

Forum posts: 0
File comments: 1
Uploads: 0
Привет, Квилайт! Прекрасный интерфейс!)
Подскажи, как убрать SpellID с тултипов (через меню аддона не изменяется, в lua файле ковырял, но не нашел, удалось отключить только ItemCount) и возможно ли убрать отображение уровня предмета и спека у целей? И каст бар стал отображаться красной полосой, а не черной как было, в чем может быть проблема?
И еще есть маленькая проблема с окном достижений, оно немного заклинено в шапке, нет возможности выбрать полученные/неполученные и сами ачивки в главном окне с "затуманенной" текстуркой.
Спасибо.
Last edited by Kesaien : 08-17-16 at 12:18 AM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.