This is an automated email from the ASF dual-hosted git repository.

jimjag pushed a commit to branch backport/phase1-format-ci
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit f30d168aa8c015466b436719d01de803179d04a1
Author: Jim Jagielski <[email protected]>
AuthorDate: Fri Jun 5 06:52:04 2026 -0400

    Backport pre-commit and CI configuration from trunk
    
    Install .pre-commit-config.yaml, the pre-commit GitHub workflow, linter
    configs (codespell, markdownlint, license templates), and .asf.yaml from
    trunk so AOO42X shares the same formatting/CI tooling. This is the
    foundation for aligning whitespace formatting between the branches.
    
    Phase 1 backport (A_FORMAT + B_CI_DOCS), infrastructure step.
---
 .asf.yaml                                       |   14 +
 .github/linters/.markdown-lint.yml              |   13 +
 .github/linters/codespell.txt                   | 2810 +++++++++++++++++++++++
 .github/workflows/license-templates/LICENSE.txt |   16 +
 .github/workflows/pre-commit.yml                |   47 +
 .pre-commit-config.yaml                         |   85 +
 6 files changed, 2985 insertions(+)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000000..ab59476305
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,14 @@
+github:
+  rulesets:
+    - name: "Default Branch Protection"
+      type: branch
+      branches:
+        includes:
+          - "~DEFAULT_BRANCH"
+          - "release/*"
+          - "rel/*"
+        excludes: []
+      bypass_teams:
+        - root
+      restrict_deletion: true
+      restrict_force_push: true
diff --git a/.github/linters/.markdown-lint.yml 
b/.github/linters/.markdown-lint.yml
new file mode 100644
index 0000000000..173a82dbb4
--- /dev/null
+++ b/.github/linters/.markdown-lint.yml
@@ -0,0 +1,13 @@
+# https://github.com/DavidAnson/markdownlint
+
+# MD013/line-length Line length
+MD013: false
+
+# MD025/single-title/single-h1 Multiple top-level headings in the same document
+MD025: false
+
+# MD033/no-inline-html Inline HTML
+MD033: false
+
+# MD040/fenced-code-language Fenced code blocks should have a language 
specified
+MD040: false
diff --git a/.github/linters/codespell.txt b/.github/linters/codespell.txt
new file mode 100644
index 0000000000..fb7742cce1
--- /dev/null
+++ b/.github/linters/codespell.txt
@@ -0,0 +1,2810 @@
+aaccess
+aadd
+aafter
+aand
+aas
+aassign
+aassignment
+aassignments
+aautomatic
+abandone
+abl
+abou
+abour
+aboved
+aboves
+abreviated
+absolulte
+absolut
+abstact
+abvious
+acccount
+acceses
+accesible
+accessort
+accure
+accured
+acend
+acessor
+aci
+acive
+acount
+acounts
+acssumed
+acter
+actibity
+activ
+activitis
+actuall
+adapater
+adapation
+adapive
+adaptee
+addd
+addes
+addin
+addional
+additinal
+additionall
+additionals
+additons
+addjust
+addopt
+addresse
+aded
+adin
+adition
+administrar
+adn
+adres
+adress
+adresse
+adresses
+advacne
+aequidistant
+aequivalent
+aer
+afer
+afeter
+affekt
+afile
+aformentioned
+aftrer
+agains
+aggreate
+aggregatet
+ags
+ahd
+ajust
+ajustments
+ake
+aks
+aktion
+aktivate
+aktive
+aleays
+algorihm
+algorith
+algorithmn
+algorithmus
+algorythm
+algrithm
+aligment
+alignement
+alignemnt
+alignemt
+alignes
+alignmant
+alignmen
+aline
+aling
+alis
+aliver
+alle
+alled
+allign
+allignment
+alllowed
+alloted
+allowd
+allowes
+allright
+alls
+alltime
+alo
+alocation
+alocations
+alocator
+alog
+alow
+alpah
+alph
+alpha-numeric
+alread
+als
+alse
+alternativ
+althoug
+alue
+alwas
+alway
+ambedded
+ambigious
+ambigous
+amonst
+amout
+analoge
+anc
+ancapsulate
+anchestor
+anchord
+andlers
+ane
+anevironment
+animaton
+anination
+anisotrophically
+anlyzing
+annote
+anologon
+anonymouse
+anonymus
+anormal
+anotation
+ans
+antaliasing
+anthor
+antialialised
+anull
+anulls
+anumber
+anythimng
+aond
+aother
+aparent
+apears
+apeends
+apend
+apllying
+apoints
+appartment
+appeares
+appedn
+appendend
+appened
+appens
+apperars
+appied
+applay
+appliable
+applikation
+applyable
+applys
+apppend
+appplet
+appropirate
+appropriat
+approriate
+appy
+aproach
+aprogram
+aprox
+aprrovement
+aquire
+aquires
+aranges
+ararbic
+arays
+arbirtrarily
+arbitraryly
+archieved
+archiv
+archtecture
+arcticle
+are'nt
+arent
+arithmetics
+arn't
+arry
+arrys
+ascendin
+ascript
+ascripts
+asend
+asender
+askes
+assebly
+assemly
+assigment
+assigne
+assistent
+assocations
+assomption
+asssuming
+assum
+assumtion
+assumtions
+asterik
+asychronous
+asymetric
+asynchonously
+asynchornous
+asynchron
+asynchronious
+asynchroniously
+asynchrons
+asynchrounsly
+asyncronous
+asyncronously
+asynschron
+atach
+ategories
+atleast
+atmost
+atribs
+atrtributes
+attachement
+attachements
+attachs
+attemps
+attibute
+attibuted
+attibutes
+attrbiute
+attribue
+attribut
+attributen
+attributs
+attruibute
+australien
+authentification
+autocoomit
+autofilt
+automatical
+autor
+avaible
+avcoids
+aviable
+avtive
+aways
+axises
+axpressed
+aynchronous
+bacic
+bais
+baisc
+barbedos
+basci
+basf
+basline
+bbefore
+bboolean
+bbooleans
+beaviour
+becames
+becaus
+beed
+befor
+befure
+beginn
+behavious
+behaviuor
+behavour
+behinde
+bejond
+belove
+beng
+bever
+binanary
+biscut
+bistream
+bizare
+bizarely
+bject
+bleading
+bload
+bloaded
+bloc
+blong
+boddy
+bodgy
+booda
+bookmar
+boostrapped
+boostrapping
+bootom
+bootstra
+bootstraping
+bootup
+boradcast
+bord
+botifies
+bottomborde
+bounderies
+boxs
+brackeds
+brance
+branche
+breaked
+breakin
+breal
+brige
+brocken
+brower
+browers
+browseable
+bu
+buffereed
+bufferred
+bufferring
+bui
+build-in
+buildin
+buld
+bumb
+cace
+cachable
+calcable
+calcualte
+calculat
+caleed
+caler
+calle
+callef
+calles
+calss
+canadan
+canbe
+cancelles
+cange
+cann
+carret
+carridge
+case-insensitiv
+case-sensitiv
+cashe
+catched
+catory
+cauched
+causion
+ccahe
+ccertificate
+ceation
+ceck
+cedentials
+cehck
+celle
+cellxs
+cenarios
+centerd
+chache
+chage
+chaged
+chahged
+chainging
+chalenge
+changeing
+changin
+chaning
+channnel
+chaper
+characetrs
+characted
+characteres
+charactersm
+characture
+charakter
+charakters
+charas
+charaters
+charcater
+charcter
+checed
+chech
+cheched
+checke
+checkes
+childern
+childrens
+childs
+chnge
+choosen
+chosed
+chosing
+chossen
+circustances
+ciriteria
+cirle
+cirsumstances
+cirumstances
+ckeck
+claculate
+clarety
+clases
+classess
+clcosed
+cleantup
+cleare
+cleares
+cleck
+clipboad
+cliped
+clockwíse
+clodes
+cloumns
+clsoe
+cluase
+cnter
+cobvers
+codde
+coinitailize
+colerscheme
+collaps
+collapsable
+collektion
+collet
+colleting
+colletion
+collorscheme
+collpase
+colmuned
+colse
+colums
+comand
+comando
+comaparison
+comaprison
+comared
+comares
+combained
+combiantion
+combin
+combinatorical
+combinbe
+comemnt
+coment
+comination
+comlex
+commad
+comman
+commans
+commatas
+commitable
+commited
+commmand
+commnent
+commont
+commpn
+comparation
+compareable
+comparisation
+comparsion
+compatibel
+compatibile
+compatibiliy
+compelete
+compeletely
+compiletime
+compiller
+complettly
+complext
+compliancy
+complient
+componbents
+componentes
+componet
+componets
+componnent
+compres
+compresing
+compressable
+compresser
+compromize
+comptability
+comunication
+conain
+conatains
+conatiner
+concatenaded
+concatination
+concatinations
+concentraze
+concret
+concurency
+conent
+conents
+conext
+configury
+conig
+connectiona
+connecto
+connexion
+consequentially
+consequetive
+consideren
+consitutes
+consol
+consruct
+constains
+constands
+constans
+constantsm
+constitently
+constraing
+constrainst
+constrast
+construktor
+constuct
+constucting
+constuctor
+consturct
+consturctor
+consumation
+contaier
+containees
+containg
+containr
+containt
+containter
+contaiun
+contaner
+contant
+contants
+contatenated
+conted
+contens
+conterpart
+contet
+contex
+contexta
+contianing
+contiguos
+contination
+contition
+contnet
+contradically
+contrl
+controle
+controllerd
+controlls
+contruct
+contstraints
+contur
+convension
+conver
+convered
+convering
+convertable
+convertors
+cooporative
+co-ordinates
+copie
+copyed
+copys
+coresponding
+corrdinate
+correcxt
+correspont
+couldn
+could't
+coult
+cound
+countr
+couses
+cousing
+coveres
+covert
+coyp
+cption
+crasher
+crashs
+creaed
+createable
+creater
+credate
+cript
+criteriom
+criticall
+crossin
+crossreference
+crossreferences
+crypted
+culmulative
+curentfilter
+currect
+curren
+currenty
+curretn
+currnet
+curros
+currupt
+curser
+customable
+customizeable
+custum
+cutomize
+cutted
+cymk
+cyrpto
+daa
+dafault
+dafaults
+dasdot
+dashs
+databse
+datas
+ddress
+deactive
+deactived
+deactiving
+deaktivate
+dealed
+dealign
+deattach
+deattached
+debuging
+declatory
+decompresser
+decroation
+defaul
+defauls
+defaultet
+defecit
+defenitly
+defered
+definations
+defind
+definetely
+definied
+definifiton
+definitivly
+defint
+defualt
+defult
+degenrate
+degress
+deined
+deklaration
+delarations
+delate
+delcaring
+delele
+delet
+deleteing
+deleteion
+delets
+delimeted
+delimeter
+delimeters
+delimitter
+delt
+delte
+deltes
+dentifier
+depandancies
+depency
+dependancy
+dependant
+dependend
+dependeny
+dependicies
+depenent
+depent
+deprication
+dequed
+dereferencable
+deregisteres
+deregistrated
+dergeistered
+deriver
+dertermine
+dervied
+dervived
+desaster
+descritor
+descritpro
+descrption
+desctop
+desctructed
+desctructor
+desginer
+desgin-mode
+desination
+desribes
+desribing
+desroyer
+destanation
+destinaion
+destionation
+destop
+destory
+destorying
+destroied
+destroyd
+destruktor
+destruktors
+destryoing
+destuctor
+desturcted
+detecion
+detectetd
+detemine
+detemined
+detemines
+determin
+determind
+determinded
+determing
+determnine
+detetmine
+detroying
+dettaching
+devision
+dezember
+dezibel
+dfined
+diable
+diables
+diagonale
+diagramas
+diagramm
+dialoge
+dialoges
+diappeares
+diaram
+dicretionary
+dictonary
+didnt't
+diffenrences
+differect
+differen
+differenciate
+differenct
+differernt
+differes
+dinteractively
+dipose
+diposed
+diposing
+dircet
+direcly
+directoris
+directorys
+directoy
+directries
+directrory
+directroy
+directy
+disabed
+disambigouate
+disambiguaiton
+disbale
+disconnet
+discreet
+discret
+discriptor's
+disfunctional
+diskrete
+dislayed
+displayin
+dispode
+disposel
+distribure
+distructor
+dito
+divisable
+divrese
+docstatistik
+docuemnts
+docuemtn
+docuent
+documant
+documemt
+documemts
+documen
+documentes
+documet
+documetn
+documets
+doens't
+doese
+doesnot
+does't
+dokument
+dollor
+donot
+do'nt
+dont'
+dont't
+dosn't
+dosposing
+dota
+doube
+doubleclick
+doumentc
+draged
+draging
+dran
+draview
+drawed
+dreawn
+drived
+droped
+dscrete
+dsplays
+dthe
+dublicat
+dulicate
+dum
+dummp
+duplicat
+durationm
+dureing
+durning
+dynamicly
+eachother
+eachs
+earch
+easely
+easer
+easilty
+easyly
+eather
+ect
+ede
+edn
+effekt
+effiency
+eficient
+efore
+egal
+egals
+egde
+ege
+einstance
+eiter
+eith
+elelement
+elememt
+elemente
+elemnt
+elenment
+elimiate
+elipse
+elment
+elseswhere
+embedd
+embeded
+empress
+emtpy
+enabeld
+enablen
+encapsualtes
+encapsulatzion
+encapsultes
+encounterd
+encripted
+encrytpion
+endcoded
+ende
+endiannes
+endin
+enew
+enginge
+enhencement
+enmum
+enoungh
+entires
+entirey
+entite
+entites
+entitie
+entitys
+entrie
+entrys
+enty
+enumarate
+enumaration
+environemnt
+environent
+environmane
+envolved
+envrionment
+eqivalents
+erlier
+eroneous
+eror
+erorr
+erro
+erroneusly
+errorneously
+errornous
+errorprone
+errror
+ervery
+erverything
+escapeable
+escpecially
+espace
+espacially
+esssential
+establishs
+etcp
+eto
+euclidian
+euqivalent
+evalation
+evalutate
+evalutates
+evalution
+evenually
+everybodies
+everytime
+evey
+evnet
+evrything
+exacly
+exacty
+examin
+exatly
+excactly
+excatly
+excecpt
+excepetion
+exceptionts
+exceution
+excisting
+exclusiv
+exclusivly
+excpet
+excpt
+excption
+excptions
+excute
+excuted
+excutes
+excuting
+excution
+excutor
+execept
+exectables
+exectly
+exectutable
+exectute
+executbale
+executeable
+exempel
+exepected
+exeqution
+exising
+exisit
+exisitent
+exisiting
+existance
+existense
+existsing
+existung
+exluding
+exlusive
+exntry
+exparation
+expectd
+expecte
+expection
+experssion
+explicat
+explicity
+explict
+explizit
+exponetiation
+exportet
+exportin
+expres
+expresion
+expressable
+exract
+exsist
+exsists
+exspect
+extact
+extaction
+extendet
+extenions
+extented
+extracing
+extracs
+extractins
+extraenous
+extrat
+extrem
+extrems
+extry
+factorys
+faild
+faile
+failes
+failture
+faktor
+falback
+fallabck
+fallbacl
+fals
+falsk
+falso
+falt
+familiy
+farest
+fave
+februar
+feburary
+fedality
+feeded
+feld
+feture
+fiddley
+fiel
+fileds
+filetest
+fille
+filles
+fillin
+filname
+filp
+fime
+fincally
+finde
+finialization
+finisch
+finised
+finishs
+finnished
+fiorget
+firs
+firsr
+firt
+firts
+fisrt
+fiter
+fith
+fitler
+fixe
+fixeme
+flaged
+flages
+flase
+fle
+flushs
+fo
+focuse
+fof
+foler
+follod
+folloing
+follong
+followin
+followind
+followings
+follwong
+folows
+fom
+fomat
+fomatter
+fonction
+fonctions
+fontains
+foontnotes
+foorter
+footnoes
+forbidded
+forbit
+foreward
+forfit
+forgoten
+formate
+formated
+formates
+formattind
+formattings
+formattting
+formely
+formen
+formmatted
+formt
+formuala
+formule
+forst
+forthe
+fot
+foward
+fpr
+fpt
+fram
+frametyp
+frane
+frequncy
+frmat
+fro
+fromat
+fromatting
+fromt
+fromthe
+fron
+froward
+fter
+fullfil
+fullfilled
+funktion
+funktions
+funtions
+fwe
+garant
+garantied
+gard
+gemetry
+genarate
+geneic
+generall
+generat
+generel
+generell
+genreate
+geoemtry
+geometrc
+geometrie
+gere
+gererate
+ges
+geting
+getlael
+get's
+givem
+givin
+gloablly
+gloassaries
+glpyh
+glyh
+gogether
+goin
+goup
+grahic
+gramar
+granchildren
+grap
+graphis
+grephic
+greysacles
+groupd
+guage
+guaranted
+guarantied
+gylph
+haa
+haeder
+hald
+halpoints
+hande
+handeld
+handelr
+hander
+handleer
+handlig
+hanel
+hangig
+hanlder
+hanlding
+hanle
+happends
+hart
+hashs
+hastable
+hav
+hava
+have'nt
+havent't
+hda
+headerr
+headin
+heigh
+hel
+hendler
+hidded
+hidding
+hided
+hiden
+hiearchy
+hierarachy
+hierarchie
+highes
+hight
+hightest
+hightlight
+hightlighter
+hightlighting
+higlight
+higlighted
+hilight
+hilighting
+hirarchy
+hitted
+hokay
+homegeneous
+homestate
+homogenity
+homogenous
+hopyfully
+horizntal
+horizonal
+horizontale
+horiztonal
+horyzontally
+horzontally
+houres
+hsa
+hsi
+hte
+htmp
+humber
+hundreths
+hyerarchy
+hyerlink
+hypen
+hypothenuse
+iconifie
+idefinite
+idel
+idendify
+identation
+identfication
+identfier
+identidier
+identifed
+identifer
+iif
+iiterator
+imaghe
+imapge
+immediat
+implace
+implcit
+implementator
+implementes
+implementor
+implementors
+implemetation
+implemtation
+implemtentation
+implenetation
+implent
+implentation
+implicite
+implicitley
+implicity
+implictly
+implments
+importent
+impossibile
+inactivate
+inacurrate
+inbetween
+inbrace
+incase
+incemented
+inclused
+inconsistancy
+inconstent
+inconviniently
+incorperates
+incosistency
+increse
+incvalid
+indendation
+indentically
+indentified
+indentifies
+indention
+indenx
+independ
+independance
+independant
+independend
+independet
+indepent
+indes
+indexs
+indicies
+indizies
+indx
+ine
+inefficently
+inestart
+infact
+infinitly
+infinte
+infor
+informatio
+informations
+ingore
+inh
+inheritage
+inheritied
+inherting
+inicial
+ininity
+initiales
+initialisiert
+initializong
+inout
+inouts
+inproper
+inpt
+inputed
+inro
+insance
+insensitiv
+inseperable
+inser
+insertin
+insertino
+insided
+instace
+installe
+instane
+instanze
+insterad
+instrction
+instread
+instrospection
+insuffiency
+intalled
+intance
+inteaction
+inteface
+integrety
+intendend
+intension
+intensitive
+intented
+intepreted
+interace
+interactin
+interactiv
+interactivly
+interafce
+interakt
+interaktion
+interaktive
+interal
+interally
+interate
+interation
+intercation
+interecptor
+interepreted
+intereseted
+interessting
+interfac
+interfer
+interlly
+interm
+internall
+internatioanl
+interpeted
+interpreation
+interprete
+interpretet
+interpretion
+interpretting
+interrest
+interrested
+interrface
+interruptable
+interruptors
+interscetion
+interupted
+intervall
+intervalls
+intesity
+inthe
+intial
+intialise
+intializing
+intiator
+intitial
+intitialization
+intorduction
+intrface
+introducting
+intstead
+invald
+invalide
+invalud
+invers
+invisibile
+invlid
+invlisible
+invokable
+invokation
+invokee
+irrelvant
+isconnection
+is'nt
+isnt
+isotrophically
+isplay
+isses
+ist
+istead
+ists
+iteract
+iteraction
+iterater
+iteratered
+iteratons
+iterm
+itnervals
+itselfs
+itselt
+ivocation
+januar
+javasript
+javasrript
+jkd
+jscipt
+juli
+juni
+justfied
+justication
+kake
+ket
+keyords
+klick
+knwon
+kocalized
+komma
+kommas
+konstant
+konwn
+koordinate
+kown
+kyrillic
+lables
+laf
+laiter
+lama
+languag
+langugage
+lanugages
+laoder
+lates
+lating
+lauguage
+leace
+leaded
+leapyear
+leas
+leat
+lements
+lenght
+lenghts
+lenth
+letgitimate
+libaries
+libary
+lightening
+lightyear
+ligth
+lik
+likeley
+linke
+linkes
+lins
+listenes
+lits
+livetime
+loaader
+loacales
+localed
+localy
+lockingf
+loclaized
+loction
+logial
+logwritter
+lokal
+lokale
+lokales
+lookin
+loopup
+loos
+losely
+lsit
+mabe
+macor
+maily
+makeing
+makfile
+makro
+makros
+maline
+managet
+manuell
+mape
+maping
+marge
+maschine
+masqurade
+mata
+matchies
+mater
+mathed
+mathes
+matricies
+matser
+maximimum
+maximun
+maxium
+maxmimum
+maxmimums
+mayu
+mdoel
+meading
+meaned
+meatfile
+meber
+mege
+menas
+ment
+menual
+menue
+menues
+menutitems
+meny
+merrors
+messges
+methid
+methodd
+methode
+methoden
+methodes
+metod
+metods
+meu
+mey
+mian
+middel
+migh
+migt
+migth
+milimetre
+mimick
+mimicks
+mininum
+miplementation
+mirrorn
+mis
+misformed
+mis-match
+mismatich
+misscounted
+missmatch
+missplaced
+misstypes
+missuse
+mmaped
+mmatching
+modell
+modfel
+modfiy
+modifed
+modifyable
+modul
+moduls
+modulu
+momement
+momemtn
+mor
+mormalized
+mose
+mot
+mothod
+moudle
+mouvements
+movebackwrd
+mudule
+muext
+multible
+multipe
+multipl
+multiplikation
+multipul
+multple
+murr
+muti
+mutices
+mutiply
+mutli
+mye
+nagative
+nam
+nameing
+namesd
+nax
+nce
+nclude
+nd
+ndefined
+nealy
+ned
+nedd
+neede
+needes
+neesds
+neet
+negativ
+nempty
+nenviroment
+nerver
+nethods
+nin
+nither
+nned
+nneeded
+nnumber
+noe
+nofified
+nohypen
+nome
+non-existant
+nonexistant
+non-useful
+nore
+normale
+normales
+nothind
+notifer
+notin
+notity
+nowadys
+nown
+nulk
+numbe
+numer
+numers
+obect
+obects
+objcts
+objec
+objectin
+objectss
+objekt
+objetcs
+objets
+obnject
+obscur
+obsolte
+occours
+occure
+occured
+occurence
+occurences
+occures
+occurr
+oclock
+ocntext
+octect
+ocur
+ocurrences
+oder
+offen
+offic
+offser
+offseted
+ofo
+ofsets
+ofsetted
+oher
+oint
+ois
+oje
+oject
+ojects
+oktober
+oldes
+oll
+olt
+oly
+ommit
+onces
+ond
+onece
+oneyway
+ongly
+onl
+ons
+ontain
+ontains
+ontents
+ontop
+onw
+onwer
+ony
+opertions
+oposition
+optain
+optimation
+optio
+optionaly
+ordner
+ore
+orign
+orignal
+ot
+otains
+otation
+otu
+oultinenodes
+ource
+ourselfs
+ourselve
+outbut
+outherwise
+outsid
+outter
+oututs
+overflw
+overidden
+overide
+overiden
+overiding
+overlaping
+overriabled
+overrided
+overrride
+overwrited
+overwritte
+overwrittes
+overwrittin
+ovrridables
+ovveride
+ower
+ownder
+ownes
+oyu
+paches
+packe
+padd
+paeth
+pagent
+paintin
+pakageimpl
+pallette
+paoition
+paragraphy
+paragrph
+paramenter
+parametere
+parametes
+parametrs
+paramterless
+paramters
+parant
+paranthes
+parantheses
+pararaph
+pard
+parem
+paremter
+parenteses
+paret
+parm
+parmater
+parmeter
+parms
+parnoia
+parsering
+partion
+partitially
+pary
+pash
+passt
+passtrough
+pasword
+patchs
+pathes
+patter
+pattrns
+pecifies
+peformance
+penality
+pepare
+perfectably
+perfom
+perfomed
+performes
+performin
+periode
+perisist
+permited
+permssion
+peroendicular
+persistance
+persistant
+pervious
+pevent
+pevents
+pezier
+phillippines
+pich
+pinter
+pitmap
+placehoder
+plattform
+playfull
+poiner
+poins
+pointzer
+poiter
+poits
+polgon
+polyar
+polygone
+polypoygon
+polypoylgons
+poperly
+poperties
+popoup
+poppup
+portugese
+posible
+posioned
+positionof
+positiv
+positon
+positons
+positve
+possibe
+possibile
+possily
+postion
+postition
+postphoned
+prameter
+prarameter
+preallocationg
+preaorocessing
+preapare
+preapared
+preced
+precedure
+precendence
+precent
+precidence
+preciding
+precsions
+precumputed
+prefere
+preferes
+preferrable
+prefic
+preformed
+preject
+prelimitary
+preoperty
+prerelases
+prerequiste
+pres
+presener
+preserv
+presetation
+presnt
+preverse
+previos
+previosly
+previosuly
+previuous
+prevoiusly
+prewview
+prexixed
+pricision
+primay
+primitves
+primtives
+pring
+pringing
+prirority
+privides
+priviledged
+privilges
+privilige
+privleges
+prmitive
+prmitives
+proberty
+probleme
+proccess
+proccessed
+proccesses
+procede
+proceshandler
+processinf
+procides
+procoess
+produkt
+produktion
+proeprties
+proerties
+proerty
+programatically
+programing
+programm
+progrss
+proirity
+promiss
+propage
+properies
+propert
+propertie
+propertyst
+propery
+proplem
+proportianal
+proproties
+proprotional
+proprty
+propteries
+propvider
+protcted
+protext
+protocal
+protoco
+protocoll
+provate
+provdided
+provicdes
+provice
+provid
+providfers
+providse
+provies
+provode
+prset
+prufe
+ptd
+publically
+puls
+punctation
+punctuations
+puplic
+puposes
+purpuses
+pyhsical
+qoute
+quater
+queing
+queiried
+quering
+querried
+queryinterace
+querys
+ques
+quesion
+quitely
+quottes
+radiobuttion
+raison
+rasied
+rcall
+readd
+readeable
+readed
+reaeched
+realative
+reall
+realted
+realtive
+reaons
+reassocition
+reate
+rebuilded
+recalcution
+receipient
+receipients
+recipies
+recofig
+recognizeable
+recommand
+recongnizes
+recreateation
+rectange
+reculrively
+recursivly
+recusions
+recusive
+recustion
+recyclying
+recylcing
+recyling
+re-declare
+redenderer
+redered
+redonly
+reelation
+reelease
+reenable
+reenabled
+reencode
+refcound
+refelected
+refelects
+refence
+refencing
+refenence
+refere
+referebces
+referecne
+refered
+referenc
+referenz
+referers
+referes
+refernce
+refernced
+refernece
+referr
+referres
+reffers
+refreshs
+regardes
+regardin
+regession
+regestry
+regidstered
+regisered
+regisry
+regist
+registerd
+registeres
+registery
+registes
+registred
+regsiters
+reguards
+regulaer
+regulariry
+regulary
+regurlarly
+rehersing
+rekursion
+rekursive
+relaive
+relase
+relased
+relases
+relativ
+relativated
+relead
+releae
+releant
+releas
+releated
+releation
+rellocates
+relly
+relys
+remeber
+remebered
+remebers
+rememeber
+remenber
+reminiscense
+remmeber
+remoce
+removeable
+removeing
+removerd
+remvoved
+rende
+rendererd
+renderering
+reonly
+reosurces
+repaitnt
+repant
+repeates
+repeatly
+repersentation
+repertoir
+repesentation
+repesented
+repesents
+repetive
+replased
+reportresouces
+repositry
+repostories
+repraesentation
+represantation
+represenation
+represend
+representaion
+representaions
+representated
+representd
+represention
+represeted
+represneted
+repspectively
+repsresents
+reqeusted
+reqired
+reqiure
+requed
+requeried
+requestor
+requieres
+requirments
+requrired
+requst
+requsted
+rerpesentation
+rertieves
+resetable
+reseted
+reseting
+resetted
+resoltion
+reson
+resons
+resore
+resourceype
+resoure
+resourecs
+responsibilty
+resset
+ressets
+ressource
+ressources
+restauration
+reste
+restes
+restoding
+restors
+resue
+resuling
+resumt
+retcieves
+retet
+retieve
+retieved
+retieves
+retore
+retreival
+retriece
+retrieces
+retrieveds
+retrieveing
+retriving
+retrn
+retrun
+retun
+retuned
+retunr
+retunrned
+retunrs
+retuns
+retur
+retured
+returend
+returne
+returs
+retursn
+reuqired
+re-usable
+re-use
+re-used
+re-uses
+re-using
+reveive
+reveived
+reveokes
+reverese
+righ
+rigth
+rimitives
+rin
+rizes
+rlation
+rmove
+roated
+rocords
+roperties
+rouge
+routet
+rovider
+rranslation
+rrase
+rsizing
+rsource
+rsources
+runned
+rurrent
+sav
+savely
+savety
+scalled
+scaned
+sceanrios
+scecified
+sceme
+scenarion
+scenarious
+scond
+scrao
+screnn
+scripte
+scriptype
+scrol
+scrollin
+scrool
+scrpit
+scrren
+seacrchable
+searche
+searchin
+searchs
+secondy
+seconf
+secont
+sectin
+segmend
+segmente
+seh
+selectin
+selecton
+seledted
+selektion
+selektor
+selektors
+seleted
+seletions
+semaphor
+sematics
+sence
+senquence
+sensitiv
+sensivity
+senteces
+sentive
+sentively
+separat
+separater
+separatly
+separtates
+separte
+sepcified
+sepecified
+sepecifies
+seperatly
+seperator
+seperators
+seqence
+seqeuence
+seqeunce
+sequece
+sequeence
+sequelce
+sequencies
+sequenze
+sequenzes
+sequeze
+sequnces
+sequnece
+ser
+serach
+serached
+serch
+serialze
+serialzed
+serieses
+serivce
+sertificates
+servce
+servces
+servcie
+serveice
+servent
+servie
+servies
+servive
+seting
+setted
+setttings
+shandow
+sheck
+sheme
+shepe
+shif-tab
+shold
+shortend
+shotcut
+shoud
+shoudl
+shoul
+shouln't
+shs
+shttp
+sie
+siez
+sightly
+signatur
+signes
+signle
+silenty
+similary
+similiary
+simlified
+simly
+simplies
+simpliest
+simpy
+sinature
+singe
+sinlge
+sinlges
+sintax
+siz
+skalar
+skipt
+slanguage
+slanguages
+smalles
+sme
+smoot
+smooting
+smove
+snyc
+soecialize
+soemone
+soiurce
+solarmutx
+som
+somelse
+someon
+somes
+somme
+sortings
+sortlst
+souce
+spaning
+speacial
+specialy
+specied
+specifices
+specifiy
+specilized
+speficies
+spefifies
+speicfied
+speparator
+spiltting
+splited
+spliting
+splitted
+spports
+spreasheet
+sqare
+squence
+srcoll
+sreen
+sreturns
+srollbar
+srolling
+srtings
+srtructure
+ssee
+stae
+stamement's
+standar
+standart
+startd
+startet
+startin
+startlisteneing
+startting
+statemnt
+stati
+statics
+stil
+sting
+stip
+stipped
+stoped
+storag
+stoream
+storge
+strech
+streched
+streching
+strem
+strin
+strippen
+stript
+strotage
+struc
+structur
+styhe
+subsedent
+substitude
+substitudes
+substitue
+substituing
+substract
+subtile
+succeedes
+succeeeded
+succesfull
+succesfully
+successfull
+successs
+succseeded
+suficcient
+sumed-up
+supercede
+superflous
+superfulous
+supersed
+superseeded
+supllied
+supllies
+suplying
+suport
+suporting
+suports
+suppoert
+suppoerted
+supporession
+suppport
+suppported
+suppres
+supressed
+supresses
+supsended
+surpressed
+surprisinlgy
+surregat
+survice
+survices
+suspicios
+sutdown
+svae
+swicth
+switchs
+swith
+swithc
+swithed
+swown
+sxl
+sychronization
+sychronize
+syle
+syles
+syllabills
+symantics
+symbole
+symetric
+symmetic
+synching
+synchonrous
+synchroizing
+synchroniously
+synchronus
+syncronisation
+syncronized
+syncronizing
+syncronous
+syncronously
+syndonic
+syschronize
+systemwindiow
+sytlesheet
+szenario
+szenarios
+szene
+tabe
+tabel
+tabels
+tabeview
+tabke
+tablle
+tage
+tages
+tagets
+tagggen
+taregt
+targer
+targt
+targte
+tbe
+te
+teamplate
+technik
+teh
+telocom
+teminating
+temorary
+tempdate
+templat
+temporaere
+temporalily
+temporarely
+temporarilly
+temporarirly
+temporarly
+temporay
+tempory
+termine
+terminte
+ternimated
+tese
+tesed
+tesselate
+tesselation
+tetry
+tetss
+texline
+textin
+tey
+tge
+tha
+thay
+thck
+thei
+theire
+themeing
+ther
+therefor
+therefrom
+theres
+therfore
+thes
+theses
+thets
+theyre
+thi
+thid
+thinn
+thise
+thown
+thrad
+thre
+threadsave
+threatment
+threatments
+throgh
+thron
+throug
+throught
+throwed
+throwgh
+ths
+thst
+thw
+tighly
+timstamp
+titel
+titels
+titile
+tje
+tne
+toches
+toggel
+toggeling
+togle
+toi
+toke
+toleranz
+tollerant
+totaly
+totation
+trama
+tramas
+trangle
+tranparency
+transfomation
+transfoprmation
+translteration
+transmition
+transparant
+transtion
+trapeziod
+tre
+tread
+treee
+treshhold
+trgistration
+triange
+trigered
+trigerred
+trigers
+trigged
+triggeres
+triggerin
+trimed
+tripple
+trivias
+trnsfered
+trough
+tru
+truns
+trys
+tung
+tupel
+ture
+tye
+tyies
+tyoe
+typcially
+typographc
+ubiquituously
+ue
+ues
+uhandled
+ultimatly
+ummark
+unambigous
+unambigously
+unaquired
+unce
+uncomplete
+unconditionaly
+unconvertable
+uncorrectly
+uncrypted
+undelying
+undet
+undistinghable
+unequality
+unexpecte
+uniformely
+uninstatiated
+uniocde
+uniqe
+uniquness
+unitialised
+unitialize
+unitialized
+unitss
+unkowns
+unles
+unnacquired
+unparseable
+unrecovable
+unregisterd
+unregisteres
+unregsiters
+unreleated
+unroated
+unsecure
+unser
+unsued
+unsupport
+unter
+untypically
+unx
+upate
+uperclass
+uppon
+upported
+upporterd
+uptodate
+ure
+urface
+uscaled
+useable
+useed
+usefull
+usefullness
+usera
+usere
+userr
+usesfull
+usig
+usign
+usigned
+usuable
+usuall
+vai
+vaid
+vailable
+valide
+valie
+valu
+valus
+vanishs
+variabel
+variabl
+variablen
+varian
+variante
+varibale
+vas
+vaue
+vefiry
+vegeterian
+vektor
+vektors
+vender
+verfy
+versoins
+verticies
+vertikal
+vetor
+vew
+vhild
+vie
+viewtransfromation
+vill
+virtuell
+visblie
+vise
+visiable
+visibile
+visiblle
+visisble
+vissible
+vistor
+visualy
+vlues
+vor
+wan't
+want's
+waring
+warpin
+wating
+wavelnes
+weant
+wee
+wege
+wehre
+weill
+weith
+wel
+wew
+whats
+whch
+whe
+whenevery
+whent
+wher
+wherether
+whery
+wheter
+whic
+whichs
+whilest
+whis
+whish
+whoms
+whoose
+whos
+wich
+wil
+wirh
+wit
+withing
+witho
+withou
+withs
+wll
+wnat
+wollow
+wolrd
+womens
+worte
+woul
+wth
+wya
+xwindows
+youre
+zar
+zlot
diff --git a/.github/workflows/license-templates/LICENSE.txt 
b/.github/workflows/license-templates/LICENSE.txt
new file mode 100644
index 0000000000..60b675e310
--- /dev/null
+++ b/.github/workflows/license-templates/LICENSE.txt
@@ -0,0 +1,16 @@
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
new file mode 100644
index 0000000000..10c7ee5813
--- /dev/null
+++ b/.github/workflows/pre-commit.yml
@@ -0,0 +1,47 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: pre-commit
+
+on: [pull_request]
+
+permissions:
+  contents: read
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.event.pull_request.number || 
github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  pre-commit:
+    name: Run pre-commit
+    runs-on: ubuntu-24.04
+    steps:
+      - name: Check Out
+        uses: actions/checkout@v6
+      - name: Install
+        run: |
+          python -m pip install --upgrade pip
+          pip install -r requirements-dev.txt
+      - name: Set PY
+        run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
+      - uses: actions/cache@v5
+        with:
+          path: ~/.cache/pre-commit
+          key: pre-commit|${{ env.PY }}|${{ 
hashFiles('.pre-commit-config.yaml') }}
+      - name: Run pre-commit
+        run: pre-commit run --color=always --all-files
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000..49d540ce98
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,85 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+---
+default_stages: [pre-commit, pre-push]
+default_language_version:
+  # force all unspecified Python hooks to run python3
+  python: python3
+minimum_pre_commit_version: "3.2.0"
+repos:
+  - repo: meta
+    hooks:
+      - id: identity
+      - id: check-hooks-apply
+  - repo: https://github.com/gitleaks/gitleaks
+    rev: v8.30.0
+    hooks:
+      - id: gitleaks
+        name: run gitleaks
+        description: check for secrets with gitleaks
+  - repo: https://github.com/Lucas-C/pre-commit-hooks
+    rev: v1.5.5
+    hooks:
+      - id: insert-license
+        name: add license for all Markdown files
+        files: \.md$
+        args:
+          - --comment-style
+          - '<!--||-->'
+          - --license-filepath
+          - .github/workflows/license-templates/LICENSE.txt
+          - --fuzzy-match-generates-todo
+  - repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v6.0.0
+    hooks:
+      - id: check-case-conflict
+        description: check for files with names that would conflict on a 
case-insensitive filesystem like MacOS HFS+ or Windows FAT
+      - id: check-illegal-windows-names
+        description: check for files that cannot be created on Windows
+      - id: check-merge-conflict
+        description: check for files that contain merge conflict strings
+      - id: check-vcs-permalinks
+        description: ensures that links to vcs websites are permalinks
+      - id: end-of-file-fixer
+        description: makes sure files end in a newline and only a newline
+        files: 
(m|M)akefile$|\.(asm|asp|bas|bat|c|cl|cmd|common|component|cpp|cs|cxx|dtd|dxp|el|h|hrc|hxx|idl|in|ini|java|js|lst|m|m4|map|md|mk|mm|mod|old|pas|php|pl|pm|pmk|properties|props|py|rc|rdf|rng|s|sdi|sh|src|template|ulf|vbs|xba|xcs|xcu|xdl|xhp|xlb|xmi|xml|xsd|xslt?|ya?ml)$|^ext_libraries/.*$|^test/.*$
+      - id: fix-byte-order-marker
+        description: removes UTF-8 byte order marker
+      - id: mixed-line-ending
+        description: replaces or checks mixed line ending
+        files: 
\.(asm|asp|bas|c|cl|cmd|common|component|cpp|cs|cxx|dtd|dxp|el|h|hrc|hxx|idl|in|ini|java|js|lst|m|m4|map|md|mk|mm|mod|old|pas|php|pl|pm|pmk|properties|props|py|rc|rdf|rng|s|sdi|sh|src|template|ulf|vbs|xba|xcs|xcu|xdl|xhp|xlb|xmi|xsd|xslt?|ya?ml)$|^main/accessibility/.*$|^main/afms/.*$|^main/animations/.*$|^main/apache-commons/.*$|^test/testgui/.*$
+      - id: trailing-whitespace
+        description: trims trailing whitespace
+        files: 
(m|M)akefile$|\.(asm|asp|bas|bat|c|cl|cmd|common|component|cpp|cs|cxx|dtd|dxp|el|h|hrc|hxx|idl|in|ini|java|js|lst|m|m4|map|md|mk|mm|mod|old|pas|php|pl|pm|pmk|properties|props|py|rc|rdf|rng|s|sdi|sh|src|template|ulf|vbs|xba|xcs|xcu|xdl|xhp|xlb|xmi|xml|xsd|xslt?|ya?ml)$
+        args: [--markdown-linebreak-ext=md]
+  - repo: https://github.com/codespell-project/codespell
+    rev: v2.4.1
+    hooks:
+      - id: codespell
+        name: run codespell
+        description: check spelling with codespell
+        args: [--ignore-words=.github/linters/codespell.txt]
+        exclude: ^extras/
+  - repo: https://github.com/igorshubovych/markdownlint-cli
+    rev: v0.47.0
+    hooks:
+      - id: markdownlint
+        name: run markdownlint
+        description: check Markdown files with markdownlint
+        args: [--config=.github/linters/.markdown-lint.yml]
+        types: [markdown]
+        files: \.md$

Reply via email to