blob: b09ef98964e6f8e4cac95fee021f6fe1aeaba449 [file] [log] [blame]
0.58 2024-10-28
- Fix meta table view for key value pairs (diewald)
- Fix warning on OAuth public clients (diewald)
- Introduce navi->list helper (diewald)
- Add border to query panel widgets (fixes #225; diewald)
0.57 2024-10-08
- Support VCs via URL without queries (diewald)
- Added translations for regexp and FCSQL (r-wilm)
- Introduce 'ui-ready' global event (diewald)
- Don't show random page option for single page
results (diewald)
- Move page to top after click on example queries (diewald)
- Disable sidebar via stash (diewald)
- Change malt/d for relation default in tour (kupietz)
- Use 'pubDate eq 2018' as VC example in tour (kupietz)
- Fix tour when started from a non-root path (hebasta)
0.56 2024-09-23
- Improve slim test for plugin support
(korapxml2...; diewald)
- Fix layerInfo retrieval for relation view. (diewald)
- Change look of addon logo. (diewald)
0.55 2024-07-03
- Removed deprecated doc_link_to helper. (diewald)
- Removed deprecated doc_ext_link_to helper. (diewald)
- Removed deprecated doc_uc helper. (diewald)
- Removed deprecated doc_navi helper. (diewald)
- Removed deprecated doc->url helper. (diewald)
- Correctly propagate warnings in frontend calls. (diewald)
- Remove corpusQuery from statistics
(as per Kudstvakt #758). (diewald)
- Improve test suite for slim images. (diewald)
- Add pages to references in snippet view. (diewald)
- Added category to Piwik calls. (diewald)
- Add SpaCy with STTS to annotation assistant. (diewald)
- Support field objects in search responses. (diewald)
- Add fields to search API (necessary
for future Kustvakt releases). (diewald)
0.54 2024-06-10
- Remove deprecated 'matchInfo' API path. (diewald, margaretha)
- Improve footer responsiveness. (diewald)
WARNING: This change requires at least Kustvakt v0.61.6.
0.53 2024-05-04
- Add openapi url to documentation. (hebasta)
- Solve a potential timing issue in VC rendering. (diewald)
- Update DeReKo link in corpus specific localization. (hebasta)
- News and announcements are now displayed in Safari (fixes #208).
(hebasta)
- Translate example query documentation. (diewald)
- Fix: The content of blockquote is displayed. (hebasta)
- Upgrade dependency and remove deprecated
method. (diewald)
- Add configuration option for defaults: items_per_page, context.
(diewald)
- Support for inline-markers in snippets. (see Krill #132; diewald)
- Added CQP tutorial (part 1; irimia, hebasta, margaretha, diewald)
0.52 2023-11-29
- Update Piwik dependency to point to matomo.js. (diewald)
- Add addon to title and description. (diewald)
- Improve Dockerfile to enable docker-slim. (diewald)
- Introduce maintenance tag helper. (diewald)
- Fix: Remembers the last position in the tutorial. (hebasta)
0.51 2023-09-27
- Support defined log file in configuration. (diewald)
- Remove experimental_client_registration setting
and make client registration mandatory in OAuth
(diewald)
- Introduce 'reserved terms' in documentation (diewald)
- Support CQP in frontend (diewald)
- Fix support for dot-symbols in (corpus/doc/text)-IDs
(diewald)
- Update information regarding CSP in conf (diewald)
- Support NKJP named entities in annotation helper
(diewald)
- Marketplace to install and uninstall plugins (hebasta)
0.50 2023-05-08
- Improvement of NKJP-annotation helper. (diewald)
- Add redirect-uri to client view. (diewald)
- Added german translation for Cosmas-II. (hebasta)
- Workaround for failing utf8 test in some
environments (fixes #197). (diewald)
- Require at least conllu2korapxml v0.6.1. (diewald)
- Improve redirection on all authorization calls. (diewald)
- Redirect-URIs are required to be absolute
by newer versions of Kustvakt. (diewald)
- Newer versions of Kustvakt disabled default
scope on authorization requests. (diewald)
- Introduce logo addon. (diewald)
- Added ud to default foundries. (diewald)
0.49 2023-02-23
- Introduce conllu2korapxml command via plugin. (diewald)
- Introduce korapxml2conllu command via plugin. (diewald)
- Do not follow redirect links on OAuth authorization
requests. (diewald)
0.48 2023-01-12
- Added support for NKJP tagset in annotation
assistant. (diewald)
- Remove deprecated 'auth_support' (since 0.31)
configuration parameter - use 'Auth' plugin instead. (diewald)
- Support environment variable KALAMAR_CLIENT_FILE for
client information. (diewald)
- Support KALAMAR_PLUGINS as a comma-separated environment
variable to load plugins in addition to the 'plugins'
parameter in the configuration file. (diewald)
- Allow popups in plugin widgets. (diewald)
- Set version via KALAMAR_VERSION environment variable.
(diewald)
- Add panel types. (diewald)
- Add textSigle as a plugin receivable information. (diewald)
- Introduce krill-indexer command via plugin. (diewald)
- Introduce start-with-backend command via plugin. (diewald)
- Update Mojolicious for security reasons. (diewald)
- Fix terser installation (fixes #182). (diewald)
- Replaced list with info API request for client information
in OAuth registration flow. (diewald)
- Fix tour localization to be overwritable. (diewald)
- Make scope a requirement for OAuth authorizations.
(diewald)
- Improve security of OAuth redirects. (diewald)
- Improve error handling for non-redirect error responses.
(diewald)
- Fix Gruntfile to copy css files after sass.
(fixes #184; diewald)
- Redirect to index on authorization failure,
in case user is not logged in. (fixes #192; diewald)
- Added annotation helper for UDPipe annotations. (wilm)
WARNING: Mojolicious 9.31 is a security update -
updating is highly recommended.
0.47 2022-11-22
- Add command to generate super_client_info file. (diewald)
- Support 'client_file' parameter as an alternative to 'client_id'
and 'client_secret'. (diewald)
0.46 2022-08-08
- Increased max query length from 1000 to 4096 characters. (kupietz)
- Fix handling of public clients. (diewald)
- Improve support for non-latin tokens in annotation table views.
(Fixes #168; diewald)
0.45 2022-05-20
- Added confidential client support to OAuth. (diewald)
- Added OAuth client authorization handling. (diewald)
- Mark public clients as slightly more insecure. (diewald)
- Reintroduce email handle support. (fixes #165; diewald)
- Support plugin declarations on registration. (diewald)
- Fetch client information before grant request. (diewald)
- Enable Zooming on mobile clients. (diewald)
- Auth Plugin sets cookie expiration explicitely
to 3 days. (diewald)
- Remove JWT Auth flow, which was deprecated since 0.42.
(diewald)
0.44 2022-02-31
- Fixed autosecrets migration. (diewald)
- Format page numbers in pagination. (diewald)
- Introduce tei2korapxml command via plugin. (diewald)
- Introduce korapxml2tei command via plugin. (diewald)
- Plugin toggle states are now managed by the state
manager and can therefore survive URL changes. (diewald)
- Add KorAP::XML::Krill and KorAP::XML::TEI to
Dockerfile. (diewald)
- Improve handling of invalid URIs in attachements. (diewald)
0.43 2021-11-05
- New menu class that has an entry at the very end,
similar to the input text prefix,
that is always available. (lerepp)
- Fix error message in case of server error (500)
response.
- Added utility funcition to util that gets all direct
childNodes of a given element by a tag or class. (lerepp)
- Remove 'X-Frame-Options' in favor of 'frame-ancestors'
as a CSP rule.
- Fix CSS compression for new SASS compiler.
- Support dynamic menu extensions.
- Dynamically extend buttongroup menus.
- Update to menu.js's removeItems function to only delete
direct childNodes aswell as a specification to test for it. (lerepp)
- Make actions private in panels and views.
- Move pagination out of resultinfo.
- Add support for "adopted" button groups and anchor children
to prepend to.
- New menu class that has a container for further
entries at the very end that is always available. (lerepp)
- Reorder documentation menu and make query languages the
default entry point. (hebasta)
- Fix init of matches.
- Fix tests on text method to accept undef for Mojo >= 9.21.
- Plugin::TagHelpers::ContenBlock now on CPAN.
- Fix navigation behaviour for folded subdirectories.
- Introduce legacy redirects for tutorial links.
- Improve QueryParam response.
- Fold all top-level navigation items.
- Add plugin service to redirect to a certain location.
- Add support for pagination information to retrieve by plugins.
- Buttongroup menus can be opened at different positions.
- Fix buttongroup anchoring if anchor doesn't exist.
- Fix blind header titles.
- Turn "upgradeTo" into an object prototype.
- Fix QueryParam response to work with Chrome (#149).
- Added DemoServer plugin.
- Support CSP disabling.
- Update intro.js (#109; hebasta)
- Introduce pagination panel.
- Support for inactive buttongroup items.
- Support default values for state.
- Introduce state manager (#119).
- Support default value for plugin toggle embeddings.
- Fix wrong handling of utf8 input in login that can
lead to server crash.
- Fix query-by-match for multiple colons.
- Fix "menu below hint marker" bug.
- HintMenu is now based on containerMenu instead of regular
menu (lerepp)
- Replace deprecated slash division in favor of math
division in Sass
- Detailed explanation of vc creation (#147) in guided
tour (hebasta).
- Upgrade Sass dependency.
- Release preparation.
0.42 2021-06-18
- Added GitHub based CI for perl.
- Added further methods for communicating JSON Files
with the server to the APIs (lerepp).
- Remove ruby-sass requirement (fixes #123).
- Added support to issue new OAuth2 tokens.
- Added tests for Mojolicious >= 9.11 compatibility.
- Replace old Kalamar logo with new KorAP logo
(designed by Norbert Cußler-Volz)
- Added large footer.
- Make KorAP logo stay when side menu is active
(fixes #133).
- Change samesite to 'None' to temporarily
allow for session riding by plugins.
- Overhaul of menuSpec to use getElementsByClassName
and getElementsById instead of child accessors
(lerepp).
- List tokens of a client.
- Upgrade Mojolicious dependency to 9.19.
- Added query reference API.
- Use AutoSecrets plugin to improve security.
- Fixed bug where missing documentation pages raise
exceptions in Mojo >= 9.0.
- Support revocation of tokens.
- Disable caching in auth routes.
- Deprecate JWT flow. In the future only OAuth2
flow will be supported and will be the default
option for authentication and authorization.
- Added settings navigation by default.
- Fix rendering bug in unauthenticated oauth route.
- Add option to toggle password fields.
- Add "copy to clipboard" feature for input fields.
- Add "copy to clipboard" for client id.
- Show settings only on demand.
WARNING: Upgrading to Mojolicious 9.19 will
invalidate all sessions. This is a security update.
WARNING: Even testing this distribution will rewrite your
kalamar.secret file to migrate to kalamar.secret.json.
It will keep kalamar.secret - but you'll advise to
delete the file after checking the integrity with
kalamar.secret.json.
- Separate prefix style from non-item style
in menus.
0.41 2021-03-01
- Introduce CORS headers to the proxy.
- Introduce Content Security Policy.
- Remove default api endpoint from config to
enable changes in the 'Kalamar' config environment
while keeping the api_path.
- Added advice in Readme regarding scripts in
Windows Powershell (lerepp).
- Establish CSP plugin.
- Added nonce helper to CSP plugin.
- Remove no-js class in nonced inline script.
- Introduce HSTS header for https_only conf.
- Send 'nosniff' header.
- defer main script.
- Introduce X-Frame-Options header.
- Introduce X-XSS-Protection header.
- Support CSP in notifications framework.
- Fetch plugin configs from JSON file to be
CSP compliant.
- Support CSP in Matomo/Piwik plugin.
- Removed deprecated default behaviour
of the Piwik/Matomo plugin.
- Support CSP in overview SVG image.
- Fix guided tour to work with CSP.
- Fix strict-mode in tour.
- Define resources in Makefile.
- Support Mojolicious >= 9.
- Remove deprecated helper methods.
- Introduce Kalamar::Request and
kalamar->request helper.
- Move /js/tracking.js to /settings/asset/tracking.js
to simplify asset configuration in proxy servers.
- Fix working directory for plugin configuration.
- Make mailto: embedding CSP compliant.
- Add frame-src to Piwik plugin as '*' may be
overwritten.
- Fix tutorial queries (reported by margaretha).
0.40 2020-12-17
- Modernize ES and fix in-loops.
- add roll() method to state object.
- Fix wrong hint-mirror behaviour in Firefox.
- Fix VC fragments for redundant constraints.
- Modernize ES and improve variable declarations.
- Improve JS test coverage for Datepicker.
- Fix character errors in hint helper at position 0.
- Improve JS test coverage for tutorial.
- Move "use strict" to file level.
- Fix bug where event bubbles when prefix is clicked
in hint menu.
- Remove email support from login (as is not
or no longer supported by LDAP) (#99).
- Fix requirement of KorAP.vc in docgroupref
(which broke the vc demo).
- Improve RegEx-Button in vc builder.
- Added 'Troubleshooting' section to Readme.
- Update for Mojolicious >= 8.66.
0.39 2020-10-07
- Add information on secret file to Readme.
- Change default API endpoint to korap.ids-mannheim.de.
- Fix label for toggle plugins.
- Activate plugin registry.
- Forward 'pipe' parameter to backend.
- Introduce base css file for plugins.
- Refactoring of sass files.
- Added query form API to plugin server.
- Exclude search results from robot indices.
- Added responsive 'news' style.
- Add support for icons in plugin definition (hebasta).
- Change buttonGroup API to accept class and
icon definitions.
- Added query parameter API to plugin server.
- Minor documentation fix in Koral.
- Added banner style.
- Introduced early 'Plugins' plugin to embed external
services.
- Introduced *-latest.css/*-latest.js files for plugin
assets.
- Add associates() method to state objects.
- Add minimize() method to views.
- Add "setWidget" action for plugin registration.
- Add clear() method to state objects.
- Fix "setWidget" action when the service was closed
instead of minimized.
- Add registrable permissions to widgets and services
(#112).
- Fix plugin info box.
WARNING: If you relied on the former default API endpoint
being http://localhost:9999/, this will break your
deployment. Please override the default API endpoint.
0.38 2020-06-16
- Support X-Forwarded-Host name for proxy.
- Document API URI.
- Improve redirect handling in proxy.
- Added support for OAuth2 client registration.
- Added support for OAuth2 client listing.
- Added requestMsg() methods to clients for retrieving
data from the embedding server.
- Improve error status codes.
- Support HTML responses for match information.
- Reuse failure template.
- Added support for OAuth2 client unregistration.
- Remove experimental status of proxy (and therefore
configuration option 'experimental_proxy') and enable
proxy by default.
- Establish 'after_search_results' content part.
- Establish 'after_search' hook.
- Recommend log in on zero matches in search results
in case not logged in (addresses #67).
- Update Mojolicious requirement for security reasons.
- Fix order of promises in login handling.
- Update Test::Mojo::Session to be compatible with latest
version of Mojolicious.
- Added Dockerfile.
0.37 2020-01-16
- Removed deprecated 'kalamar_test_port' helper.
- Separated KalamarHelpers and KalamarPages.
- Renamed 'doc_link_to' to 'embedded_link_to'
and deprecated 'doc_link_to'.
- Renamed 'doc_ext_link_to' to 'ext_link_to'
and deprecated 'doc_ext_link_to'.
- Renamed 'doc_uc' to 'under_construction'
and deprecated 'doc_uc'.
- Introduced 'page_title' helper.
- Simplified documentation routing.
- Added 'realm' parameter to 'embedded_link_to' helper.
- Introduced 'navigation' helper with 'realm' parameter.
- Deprecated 'doc_navi' helper in favor of 'navigation'
helper.
- Added 'navi->set' and 'navi->add' helper.
- Added settings skeleton.
- Added query panel for query views.
- Added result panel for plugin registration (hebasta).
- Added state object.
- Added toggle button to buttongroup.
- Added pipe object to implement KoralPipes.
- Separated "service" from "widget" plugin embeddings.
- Implemented preliminary host->plugin communication.
- Fixed matchID transformation to deal with textSigles
having dashes.
- Catch timeouts in proxy.
- Support non-verbal elements in token table view.
- Refresh corpus statistics by clicking the
statistics button (#107, hebasta)
- Fixed links to Leibniz association (hebasta)
- Make proxy timeouts configurable.
- Show busy indicator while waiting for query results
(#104).
- Update JS dependencies.
0.36 2019-09-19
- Rename all cookies to be independent
for different instance (#94).
- Enable https only via
configuration option 'https_only'.
- Make VC replaceable via KorAP.vc.fromJson().
- Emit 'after_render' in proxy responses
to make it accessible to post processing
(such as the Piwik plugin).
- Fix treatment of legacy "collection" parameter.
- Fix pagination by not repeating page value in URL.
- Added auto-refresh of OAuth tokens.
- Added token revocation on logout.
- Improve visibility of keyword fields in metadata view.
WARNING: This requires relogin for all users!
0.35 2019-07-19
- Added EXPERIMENTAL proxy to API route.
- Remove deprecated api configuration
(requires api_path instead now).
- Deprecated 'collection' parameter in
favor of 'cq' (#92).
- Update API for statistics.
- Introduced documentation on CQL (margaretha).
- Introduced documentation on Cosmas 2.
- Improved documentation on APIs.
- Introduced documentation on FCS-QL (margaretha).
- Enable experimental proxy via
configuration option 'experimental_proxy'.
- Updated documentation on annotations.
- Introduced documentation on Annis QL (margaretha).
- Improved documentation on data.
- Removed documentation stub for wildcards
(fully integrated in C2 documentation).
- Improved documentation on regular expressions.
0.34 2019-06-26
- Introduced guided tour (hebasta, #19).
- Updated dependency on M::P::Notifications to
be compatible with recent versions of Mojolicious.
- Introduce cuts in token views.
- Improve QueryCreator to single-quote-escape special
characters in orth-line and include more symbols.
- Remove deprecated auth_support support.
- Add OAuth2 password grand flow.
0.33 2019-03-28
- Fix problem with serialization and deserialization
of large numerical values (#87).
- Added command to generate example HTML file
to pick from JS test suite.
WARNING: This requires complete recaching, so run
$ perl script/kalamar chi clear default
$ perl script/kalamar chi clear user
in your MOJO_MODE environment after update.
0.32 2019-03-12
- Support attachements in metadata fields (#77).
- Added ping request option to Piwik.
- Fix handling of login errors.
- Added Statistics reload option (hebasta, #66).
- Fixed VC query serialization (hebasta).
- Fix treatment of 'data:,'-attachements.
- Rename "Institute for the German Language" to
"Leibniz Institute for the German Language".
- Fixed "next"-character in paginations.
- Added new IDS logo.
- Fix timeout cache (#84).
0.31 2018-11-30
- Update to Mojolicious >= 8.06.
- Made Authentication/Authorization a separated Kalamar::Plugin::Auth
(deprecated most helpers from Kalamar::Plugin::KalamarUser).
- Introduced abstract 'korap_request' helper.
- Introduce 'sidebar' content_block.
- Introduce 'headerButtonGroup' content_block.
- Added corpusByMatch assistant (#27).
- Fixed XML fragment serialization in KQ highlighter.
0.30 2018-11-13
- Rewrote backend:
- Removed dependency of Mojolicious::Plugin::Search.
- Removed abstract API.
- Improved backend error handling.
- Improved backend test suite.
- Removed MMap cache from default configuration
and rely on in-memory cache.
- Introduced Piwik as a separated plugin
(no longer a mandatory plugin).
0.29 2018-10-05
- Deprecated Kalamar.api configuration key
in favor of Kalamar.api_path.
- Fix replacement of docs with docGroupRefs in
VC builder.
- Improve touch support for menus.
- Improve touch support for annotation assistant.
- Move token table view to marked match.
- Added metadata headers.
- Update to Mojolicious >= 8.02.
0.28 2018-08-29
- Introduced Widget based plugin system.
- Added corpus statistics to VC (hebasta, #25).
- Introduce center alignment (#63).
- Change KWIC lines from table style
to flexbox style (#31).
- Added doc group reference to VC builder (#62).
- Show VC name, when a reference is defined.
- Make close in match view to minimize.
- Add minimize button to VC.
- Make unspecified values in VC a button.
- Fixed KoralQuery view to correctly update session.
0.27 2018-07-23
- Introduced content blocks to create
flexible entry lists in the footer
- Add marker for "cutted" matches.
- Re-enabled Windows installations.
- Added buttongroup class.
- Introduced panel and view system for
results and matches.
- Support verbatim keys/values in QueryCreator
to deal with Koral issue #42.
0.26 2018-04-06
- Added meta data view.
- Attach reference line to match bottom.
- Separate match views and integrate relation menu
into reference line.
- Attach querycreator object to annotation table.
- Update client side dependencies
- Introduce development mode to client side code.
- Generalized Poliqarp tutorials and made
example queries corpus independent.
- Improve README.
- Protect login for csrf attacks.
- Remember app state after login (issue #20).
- Fixed DRuKoLA annotation assistant data.
- Fixed server error reporting.
- Introduced text type in VC creation.
- Removed "contains" and "containsnot" from
string type.
- Added "ne" operation to date meta type.
- Added Piwik/Matomo integration.
0.25 2018-01-31
- Make annotation assistant configurable.
- Support multiple prefixes in menus.
- Show annotation tooltips in table views.
- Improve result display when JavaScript is disabled.
- Improve VC creation tool by supporting "blurring".
- Make tutorial queries localizable for different default corpora.
- Update dependencies.
- Add lwc annotations.
- Adapt support for new relation serialization by Krill.
0.24 2017-11-22
- Added support for relation visualization.
- Added support for FCSQL.
0.23 2017-09-20
- Added query creator tool.
- Fix visualization of empty contexts in KWIC.
- Added announcement template.
0.22 2017-06-26
- Added user authentification using Kustvakts LDAP
connection.
- Added X-Forwarded-For.
- Introduced proxy_prefix as a configuration option.
- Added support for more rewrite options in js.
- Fixed legacy sigle parsing.
0.21 2017-02-01
- Use textSigle for API communication instead of
{corpus,doc,text}ID.
- Added alert to annotation assistant.
- Improved menu creation.
- Introduced benchmark system.
- select elements are now improved menus.
- Annotation menu do not append menus anymore.
- Updated dependency for bugfixed Localize.
- Improved readme for localization generation.
- Fixed select menus to show selected item on
initialization.
- Improved compatibility for new text sigles.
- Fixed alert to not be correctly hidden.
- Added download of tree visualizations.
- Do not show multiple identical annotations
in table view.
- Added preliminary support for metadata columns.
- Added preliminary support for multimenus.
- Updated to more recent version of Mojolicious (7.23).
0.20 2016-05-25
- Improved menu using sliders.
- Improved menu to make prefixes chooseable,
even if list can't be filtered.
- Improve pageup/pagedown behaviour in menus.
- Fixed multiple bugs in menu.
0.19 2016-04-28
- Improved datepicker to enter date strings.
- Improved menus to have fixed length depending
on entry list.
0.18 2016-02-29
- Support for dashes in identifiers.
- Minor changes to the layout.
- Simplified configuration file.
0.17 2015-11-13
- Support a larger template cache.
- Minor style adjustments.
0.16 2015-06-18
- Update to new KoralQuery API.
WARNING! This version is no longer compatible
with old responses of Krill.
- Introduced new notifications engine.
0.15 2015-05-21
- Cleanup for GitHub release
- First realease on GitHub.
0.14 2015-04-15
- Redesign of JS and Sass assets
- Introduced RequireJS
- Introduced VC
- Improved tutorial
- Localized client files
0.13 2015-03-10
- Project name is now "Kalamar"
- Removed Mr Crabs - introduced Karl
- Support semantic markup for KWIC
- Fixed Click-bug in annotation menu
- Renamed "KorAP" classes to "Kalamar"
- Support proxy
0.12 2015-01-28
- Fixed alignment bug
0.11 2014-01-16
- Fixed paging bug with the async api
- Disabled Testing feature in tutorial
- Improved test suite
0.10 2014-12-21
- Fixed time_exceeded bug
- Fixed test_port bug for inspection button
0.09 2014-12-03
- Added new API module
0.08 2014-11-19
- Added new suggestion module
0.07 2014-11-03
- Added API-Response view
0.06 2014-09-22
- Updated certain Notifications and AssetPack plugins
- Updated pagination plugin
0.05 2014-07-15
- Improved tutorial support
- Added Exception mail system
0.04 2014-07-08
- Fixed template view
- Preliminary match view
- Switched to asset pipeline wth sass
- Added syntax highlighting to JSON
- Update to Api 0.1
0.03 2014-06-20
- Added preliminary autocompletion support (freetime project)
0.02 2014-06-17
- Added morphological tables
0.01 2014-05-31
- Simplifications:
Notifications plugin is at
https://github.com/Akron/Mojolicious-Plugin-Notifications
All other plugins can be found at CPAN