MediaWiki 1.22/wmf3/Changelog

Core changes

 * - Merging MobileFrontend Vary updates.
 * - Bump GuidedTour for E3 deployment
 * - Change font size for edit links to small
 * - Import: Fix incorrect wfRunHooks usage
 * - Update Zero
 * - Update GeoData to grab https://gerrit.wikimedia.org/r/61962
 * - GettingStarted: set serializer to none to avoid segfaults
 * - jquery.badge: Add CSS inline-block fix for IE 7 and earlier
 * - Update GettingStarted to use RedisConnectionPool
 * - Updating CentralNotice for Historical Allocations.
 * - Update Wikibase, DataValues and Diff
 * - Adding Extension:AccountAudit
 * - Call jQuery.ready before &lt;/body&gt;
 * - Fix $wgVersion to 1.22wmf3
 * - Add TemplateData extension
 * - Update wikidata extensions to versions in 1.22wmf2
 * - Fix gitreview defaultbranch
 * - Hook for changing language links.
 * - Split line and fixed spacing in skins folder
 * - wfRandomString: Correct bias toward digits 1-7
 * - [JobQueue] Added a delayedJobsEnabled function.
 * - Move section edit links to after the headings
 * - Created ProfileSection class to avoid wfProfileOut whack-a-mole.
 * - Fixed spacing around parenthesis in languages/tests/maintenance
 * - Fixed spacing around parenthesis in includes
 * - Fix email address formatting in API credits.
 * - Fix PHPUnit ORM Tests to work with Postgres
 * - Don't underline a elements with the mw-ui-button class:
 * -, not outdated
 * - Pass array to Title::getLocalURL instead of an urlencoded string
 * - Use wfShellExec in parserTest.inc
 * - Avoid use of __METHOD__ in closures.
 * - Updated wikitext-escaping tests to reflect Parsoid's latest output
 * - Added space after switch/Removed spaces after unset
 * - Clean-up to global overrides in NewParserTest
 * - Update code formatting
 * - Update messages.inc and rebuild MessagesEn.php.
 * - Update maintenance file with new message keys slipped in sometime...
 * - Removed space after isset
 * - Ignore message 'today-at' for translation
 * - Add input checks for Language::sprintfDate
 * - Remove unused local variables in tests
 * - Fix &quot;contributors this month&quot; # in signup form
 * - Create account-specific header for its error box
 * - Moved RC purge logic to RecentChange::purgeExpiredChanges.
 * - Changed on-request job running to shell out instead of doing a loop.
 * - MyISAM warning when InnoDB is not available
 * - Fixed maintenance/tables.sql (typo i guess)
 * - Updated onTransactionIdle docs a bit.
 * - test: describe the parser tests recorder
 * - Use wfShellExec in MimeMagic
 * - Add linkprefix test to parserTests.txt.
 * - Fixed dumpBlocks fcn
 * - Add parserTests for tilde and equals signs in links.
 * - Update checkStorage.php to not use deprecated Revision::getText
 * - Remove globals unneeded after 47d1060
 * - Add some recently added messages as ignored
 * - Clarified PoolCounter::execute docs a bit.
 * - Add parentid to output of list=usercontribs
 * - Simplify the logic to decide whether to show &quot;variant&quot; and &quot;noconvertlink&quot; on Special:Preferences
 * - Docs for Redis' -&gt;exec return value
 * - Remove is_numeric check from Title::checkUserBlock
 * - Fix bug in OOM avoidance for RepoGroup cache.
 * - Create account form with vertical form appearance
 * - Fixed return value for RedisBagOStuff::cas.
 * - Introducing a new variable
 * - Check read permissions in ApiFeedContribs
 * - Include cluster name in JobQueueDB cache keys.
 * - Minor fixes to the code documentation
 * - Move &quot;SpecialSearchResultsPrepend&quot; note back to 1.21
 * - Update AutoLoader
 * - Fix TimestampTest broken by 7e3386d4
 * - Simplify the nested ifs of Preprocessor_DOM::preprocessToObj
 * - User::addGroup could cause duplicate groups
 * - Moved CryptRand.php to MWCryptRand.php
 * - StatCounter doc tweaks.
 * - Fix case of $wgLocalTZoffset from 7e3386d4
 * - Renamed QoS_Atomic =&gt; QOS_ATOMIC in some places.
 * - update file metadata in importImages
 * - Make current year default value in the Special:Contributions
 * - Don't repeat label styling
 * - HTMLForms: Support non submit buttons
 * - Move template header inside form so CAPTCHA works
 * - Web installer: always autoselect some DB type
 * - Replace weird usage of explode
 * - Bumped RING_SIZE to use 28 bits to improve weight accuracy a bit.
 * - mediawiki.util: Fix roundtripping of tooltip in portlet links
 * - Avoid use of __METHOD__ in closure.
 * - Refactor MWTimestamp::getHumanTimestamp and add hook.
 * - Fix HTMLForm's documentation example
 * - Cleaned up Hooks code, comments, and documentation.
 * - LogEventsList:showLogExtract should ignore WebRequest
 * - Fix debug log line for $userLimit.
 * - Handle search engine returning status objects to the API
 * - Placeholder attribute of searchInput element
 * - Fixed spacing in files direct in includes folder
 * - Fixed spacing in context/installer/media/templates/upload folder
 * - Add doc for SpecialPage::postText
 * - Added more fine grained groups for parser tests
 * - Improved readability of MediaWikiParserTest::suite code
 * - Fixed spacing in db/debug/diff/externalstore/objectcache folder
 * - Fixed spacing in actions/cache/filebackend/filerepo/job folder
 * - Remove duplicate code from Setup.php
 * - Fixed spacing in logging/parser/profiler/rl/revdel/search folder
 * - Remove subpage from form target on Special:BlockList
 * - Fixed spacing in specials folder
 * - Update formatting
 * - Fixed spacing in api folder
 * - Separate language generation from outputPage
 * - [JobQueue] Fixed numbers given to redis queue stat calls.
 * - [JobQueue] Use regular wfDebug in some places.
 * - Added abandoned job stats.
 * - API: Add new hook 'APIGetPossibleErrors'
 * - Only allow fields from isFieldSortable to be sorted on.
 * - [FileBackend] Made stat cache factor in last-modified time.
 * - [FileBackend] Disallow files ending in / and clarified some docs.
 * - [JobQueue] Added JobQueueFederated class for partitioned queues.
 * - [LockManager] Added a RedisLockManager class.
 * - [JobQueue] Deprecated confusing Job::getId function.
 * - Factored JobQueueRedis::redisEval into RedisConnRef::luaEval.
 * - Moved Block and Title purgeExpired functions to onTransactionIdle.
 * - UIDGenerator: better support for 32-bit machines
 * - Fix @return type hint for Title::newFromID
 * - Clean up, comments, remove obsolete mw-ui-formlist
 * - [JobQueue] Added per-type stat counter calls for better graphs.
 * - Wrap job execution around profiling calls.
 * - Fixed some spacing in maintenance folder
 * - Pass a limit to BackLinkCache::getNumLinks in some places to avoid OOMs.
 * - Normalise user names passed to Special:BlockList
 * - Use a combined const, instead of string concat in Exif.php
 * - Move list generation out of TablePager::getLimitSelect
 * - Cleaned up test cleanup for FileBackend and avoid use of @.
 * - [JobQueue] Simplified a bit of code in JobQueueRedis.
 * - Make UserCache only look up a user once.
 * - Do not bother with ForkController for procs=1.
 * - Got rid of some global $wgContLang usage in SpecialAllpages
 * - Add gender to 'passwordreset-emailerror-capture' message
 * - Make concurrent runs of FileBackendTest independent
 * - Fixed spacing in languages folder
 * - Add missing braces to for in wfGetCallerTest
 * - [FileBackend] Simplified the shard list iterator to use AppendIterator and FilterIterator.
 * - Reduced DB contention in User::saveOptions.
 * - Small doc fix to JobQueueRedis.
 * - Set up the profiler in CLI mode.
 * - Clean up SpecialFilepath.
 * - else if -&gt; elseif
 * - Move release notes from 1.21 to 1.22
 * - Rebuild MessagesEn.php
 * - Clean up old way to disable variants (using a special name 'disable')
 * - Set 'skin' template parameter rather than override parent method
 * - Support HTTP timeout detection in curl backend
 * - Use onTransactionIdle for page invalidations when not using the job queue.
 * - Add non DBMS depending SQL tests for DatabaseBase
 * - Some tweaks to the database commit callback docs.
 * - Account for $wgSquidMaxage in OutputPage::checkLastModified.
 * - Pushed updateCategoryCounts to transaction end to reduce contention.
 * - [Database] Added onTransactionPreCommitOrIdle function.
 * - Some more editor files to ignore.
 * - Added a function to LoginForm to show the &quot;return to&quot; page.
 * - Disable external entities in Import
 * - Disable external entities in XMLReader
 * - Sanitize $limitReport before outputting
 * - Add git HEAD date to Special:Version for core and extensions
 * - Fixed spacing in skins folder
 * - Modifying ArticleEditUpdateNewTalk hook so that it passes the recipient
 * - Set Agora font stack to mw-ui-container in Vector
 * - Fixes to Special:ConfirmEmail form
 * - 5 new tests (3 Parsoid serializer, 2 parser) &amp; fixed 4 tests.
 * - jquery.makeCollapsible: minor fixes to togglingHandler
 * - Fixes to Special:BookSources form
 * - Moved JobQueueDB::recycleAndDeleteStaleJobs function below overriden ones.
 * - test: abstract parser test result
 * - Cleanup and performance tweaks for BacklinkCache.
 * - Fix HTML output of TablePager
 * - $.tablesorter: require separators when detecting dates

AbuseFilter

 * - Deprecate addHolder for addHolders.
 * - Added css class for hidden logs.
 * - Add a &quot;ucase&quot; function to convert the provided string to uppercase.
 * - Use POST method for action=abusefilterchecksyntax API requests
 * - Add .jshintrc for AbuseFilter and make it pass

ArticleFeedbackv5

 * - Timestamp params (no longer Message-&gt;escaped) still need to be escaped

CentralAuth

 * - Sanitize user auto creation in CentralAuth
 * - Refactoring SpecialGlobalUsers.php and SpecialMergeAccount.php to use XML and HTML forms.
 * - meta=globaluserinfo doesn't display homewiki
 * - Add option to meta=globaluserinfo to provide global edit count
 * - Refactoring Special:CentralAuth to use XML and HTML forms.
 * - Refactoring specials/SpecialGlobalGroupPermissions.php to use XML forms.
 * - Updates to migrateAccount.

DataValues

 * - Stopgap to avoid excessively long string values (backport)
 * - Revert of I4873abce509e391cbe3104883965c91dd0b592d1 and correct valueview dependencies
 * - Replace incorrectly used asserts by exceptions
 * - Added tests for notifier
 * - rem unused import
 * - rem unused imports
 * - Remove ValueFormatters Result interface
 * - Remove ValueParsers Result interface
 * - Remove Result interface
 * - Deprecate ValueParser Result interface in favour of throwing ParseException

Diff

 * - Introduced ValueComparer interface
 * - Fixed since tag

DonationInterface

 * - (FR #901) Recurring Amazon
 * - Adjustment to the iFrame liberator such that it hides all elements that other resourses might add (skin stuff, whatever) while we're waiting for the liberated iframe contents to load.

EducationProgram

 * - Added CourseActivity special page
 * - Sort events within their groups as well + new tests
 * - Pass in correct timestamp format to event query
 * - Moved logic into CourseActivityView from the action that is using it
 * - Added course not found support to view course activity action
 * - Added __METHOD__ to MW DB abstraction layer calls in course store
 * - Added extra tests for the course store and fixed some found issues
 * - Added tests for top level factory
 * - Fix tab selection check
 * - Added getCourseById and getCourseByTitle to CourseStore
 * - Further implementation work on ViewCourseActivity action
 * - Started implementation of CourseActivityView and fixed dependency injection issues in the Timeline code
 * - Fix how student id is passed to ArticleTable
 * - Displat &quot;No summary provided&quot; for edit events that have no associated summary
 * - Split up event grouping logic and added tests
 * - Modified text for Special:MyCourses when it is blank to be more general

EventLogging

 * - ...and back to utf8 as default charset
 * - Default MariaDB character encoding for EL data: utf8 -&gt; utf8mb4
 * - Use more precise type annotation for promise.
 * - Show newlines and whitespace in schema values.
 * - Partial revert of Idc3d42be7
 * - Make &quot;count&quot; optional
 * - Add optional &quot;count&quot; argument for injecting seq ids

GeoData

 * - Fix GeoData validation fail observed in the wild
 * - Fix test I broke during merge conflict resolution
 * - makefile
 * - : empty globe should be treated as $wgDefaultGlobe
 * - : Coordinate value in dec format does not work on de,da,is
 * - Detect fractional numbers where they shouldn't be in coordinates

Math

 * - Add support to MathJax for RGB colors
 * - MathJax: Ignore pagecolor command
 * - : Protect against tex nodes wrapped in tex nodes.
 * - MathJax: Update to version 2.1
 * - MathJax: Remove support for wikEd and AjaxPreview
 * - MathJax: Add a renderTex hook to render elements on demand
 * - Do not poison the tex formula with markup
 * - Remove even more unused variables
 * - MathJax: Allow user to configure MathJax
 * - remove unused code
 * - debug log was attempting to show a Blob object
 * - tests: skip math table creation for SQLite DB
 * - renaming of read and write methods for database access
 * - rename tests/MathRenderTest.php
 * - escape literal % in tex input

Narayam

 * - Add .jshintrc
 * - Update spelling for Odia

OpenStackManager

 * - Call $project-&gt;editArticle for all member changes.
 * - Fix gidNumber conflicts for service groups vs. project groups.

ProofreadPage

 * - Fix some regressions included in EditProofreadIndePage
 * - Replaced Xml class by Html.

RSS

 * - updated version number to 2.21

Scribunto

 * - Fix sandboxing with require
 * - Magic word localization in Galician.
 * - Don't pass negative years to Language::sprintfDate
 * - lang:parseFormattedNumber should return a number, not a string

ShortUrl

 * - jshint fixes

TimedMediaHandler

 * - only filter out files not directory
 * - deduplicate transcode jobs

TorBlock

 * - Fixed classification of Tor nodes to only block exit nodes.

Translate

 * - Disable upload from URL on Special:ImportTranslations by default
 * - Update the target language direction when changing the language
 * - Ensure translated pages are rendered with data from master
 * - Drop Special:MyLanguage from wiki page group descriptions
 * - Small comment fixes
 * - Add refresh-translatable-pages.php script
 * - Documentation formatting update
 * - &lt;tvar|&gt; visible on translation pages in source language
 * - Replace method which already exists as strtr
 * - Simplify tracking of changed units and fix invalidation
 * - Code consistency
 * - Check that there are editing controls when removing tipsy
 * - Add group description for Vicuña Uploader
 * - Remove some no longer needed description messages
 * - Add message for blockly groups
 * - Show &quot;Cancel&quot; instead of &quot;Skip&quot; at the last message
 * - Make sure that the proofread tipsy is hidden when editing
 * - Update .jshintrc
 * - Bump version
 * - Always show the empty-list helpers
 * - Update comment
 * - Word-wrap the source text to prevent overflow
 * - Fix double escaping
 * - Better adapt textarea to content
 * - Reminding functionality for sandbox
 * - Implement empty state indicators for proofread mode
 * - Removed repeated function calls.
 * - Add dropdown menu as a separate module

TranslationNotifications

 * - notifytranslators.js: Fix broken closure
 * - Add .jshintrc

UniversalLanguageSelector

 * - Changes to show the display settings in the sidebar
 * - Add backward compatibility for fetchLanguageNames
 * - Update from upstream
 * - Fix tipsy behaviour
 * - Join some appends to one call
 * - Rename confusingly named function
 * - Avoid null in the IME languages buttons
 * - Fix typo
 * - Don't let anonymous users change interface language
 * - Fix JSHint issues
 * - Update webfonts and uls libs from upstream
 * - Cleanup for jslint and coding conventions
 * - Load ULS language list from a resource loader module
 * - Use wmf geoip by default
 * - Styling for the Language settings panel
 * - Update from upstream
 * - Fix Undefined offset notice
 * - Ignore libs for JSHint
 * - Introduced $wgULSAnonCanChangeLanguage
 * - Don't show tipsy for an unknown language
 * - Scroll the ULS panel into view automatically
 * - Update ULS from upstream
 * - Add help text above the buttons
 * - Show the web fonts selectors only if they are enabled
 * - Split language settings view into two tabs
 * - Update from upstream
 * - Add the sidebar ULS cog icon and $wgULSPosition variable
 * - Cleanup CSS
 * - Remove uls-select-content-language
 * - Update .jshintrc
 * - Update from upstream

UploadWizard

 * - Use $.each instead of for(in) loop on Array's
 * - Cleanup: missing &quot;var&quot;s, unused locals, etc.
 * - Making sure disclaimer message is parsed in Flickr interface
 * - Hide the 'Next' button until a license is chosen.
 * - User preference for maxSimultaneousUpload

VisualEditor

 * - Fix ce.AlienNode
 * - Revert &quot;Redo ve.createDocumentFromHTML properly&quot;
 * - Use duck typing instead of instanceof Node
 * - Fixing Phantom placement in RTL
 * - Fixed docs
 * - makeStaticLoader: Fix trailing slash
 * - makeStaticLoader: Implement --fixdir option
 * - Create meta item for defaultsort
 * - Fix new test case to use new domElements instead of html
 * - AlienNode stores original DOM elements instead of HTML
 * - Paragraph-&gt;heading conversion was broken when cursor next to an inline node
 * - Add Matma Rex to AUTHORS.txt
 * - Allow fixUpInsertion to move offsets when inserting at start/end
 * - Stop dropping properties in copyObject/copyArray
 * - Add a copy of jquery.client so the standalone still works
 * - UI Refactor
 * - Add TableCaptionNode
 * - Fix FF specific bug
 * - Further AnnotationSet optimisation: create containsIndex
 * - Add method to ElementLinearData to get IVStore items in use

Wikibase

 * - Cleanup of edit-conflict Selenium test
 * - Fix issues in Entity::patch
 * - Show correct revision of entity when viewing an old revision
 * - Pass language from property parser function to entity id label formatter
 * - Mark Selenium test for including property by label as experimental
 * - Attempt fix for the linkitem selenium tests
 * - Selenium tests for autocomments/autosummaries
 * - Autosummary for setClaim
 * - (hotfix) Fix for broken snakview key handling
 * - Basic validation for snaks JSON in SetReference
 * - Added IDs for entity page's sitelink and claim headings
 * - (hotfix) Fixes broken editing introduced in 55e6d866
 * - Fix summary for new items and properties
 * - Fix an error in the README
 * - Update the README
 * - Use RecentChange::getTitle in ExternalChangesLine
 * - Quote regexp delimiter in SearchEntities
 * - Refactor wikibase.store - introduce AbstractedRepoApi
 * - Slightly overhaul SetAliases
 * - info about approved copyright message in one language will remain
 * - ChunkCache for speeding up dispatchChanges.
 * - Puts twisted dependencies from I4873abce509e391cbe3104883965c91dd0b592d1 where they belong
 * - Fix linkItem widget for articles with an item
 * - Fix problem with dismissing copyright notice
 * - Make check for ULS language case-insensitive in Selenium tests
 * - Moved class registration of WikibaseLib into dedicated file
 * - Remove usage of LibRegistry in WBR SpecialPages
 * - Remove usage of LibRegistry in WBR API
 * - Remove usage of LibRegistry in ClaimSaver
 * - Add getDefaultInstance to repo top level factory
 * - Remove usage of LibRegistry from WBC extension
 * - Remove obsolete test files
 * - Rem WB Query from test entrypoint as it is causing problems for jenkins
 * - Factor ClientStoreFactory into WikibaseClient.
 * - Added WikibaseRepo top level factory
 * - Fix English spelling
 * - Expand legend on Special:DispatchStats
 * - Unserialize on the fly to Save memory in Change.
 * - Remove redundant bloat from API modules.
 * - Use getUserPermissionsErrors in EditEntityAction::showPermissionError
 * - Introduced setError in claimview and referenceview widget
 * - ClaimInserter now obtains the insertion id needed to insert the snaks
 * - Added getInsertId to QueryInterface
 * - Finish up initial SnakInserter code
 * - Triggering &quot;afterremove&quot; on the widget managing the remove process
 * - Avoid redundant filtering in dispatcher.
 * - Added parent widget reference to edit &quot;toolbar&quot; options
 * - Simplified toolbar definition
 * - Removed direct use of _trigger from edittoolbar widget
 * - Remove usage of removed ValueFormatter Result interface
 * - Work on implementation of SnakInserter
 * - Added SnakRowBuilder
 * - Implementation work in ClaimInserter
 * - Changed QueryEngine test namespace to Wikibase\Tests\QueryEngine
 * - Split off ClaimRowBuilder to its own file and added tests
 * - Move classes into ClaimStore namespace
 * - Some implementation in ClaimInserter
 * - Take a InternalEntityIdFinder in ClaimInserter
 * - Added exception to EntityIdMap
 * - Preliminary implementation of EntityIdMap
 * - Add more verbosity to dispatch changes
 * - Removed __continueStopEditing flag
 * - Shaping the ClaimInserter interface
 * - make wgRateLimits apply to Wikibase.
 * - Resolve merge conflict
 * - Do not require specifying a snak type for ValuelessSnakStore
 * - Implented ClaimsTable-&gt;insertClaimRow
 * - Added base for ClaimsTable
 * - Added ClaimRow data structure
 * - optimized imports
 * - Added internal snak type restriction to ValuelessSnakStore
 * - Improved test ValueSnakStoreTest-&gt;testStoreSnak
 * - Rename QueryEngine Updater to Writer
 * - Added tests for exception cases
 * - Implemented ValueSnakStore-&gt;storeSnakRow
 * - Merge SomeValueSnakStore and NoValueSnakStore as ValuelessSnakStore
 * - Split SnakRow into ValueSnakRow and ValuelessSnakRow
 * - Implemented SnakRow-&gt;getInternalSnakType and added tests for SnakRow getters
 * - Added SnakRow-&gt;getInternalSnakType
 * - NoValueSnakStore now takes a tableName rather then tableDefinition
 * - Update field names of valueless snaks table for clarity
 * - Implemented NoValueSnakStore-&gt;storeSnakRow
 * - Renamed SnakStore-&gt;storeSnak to SnakStore-&gt;storeSnakRow
 * - Rename StoreSnak to SnakRow
 * - Removed unused imports
 * - Updated SnakStore interface to use StoreSnak data structure
 * - Introduction of StoreSnak class
 * - Implented ClaimsTable-&gt;insertClaimRow
 * - Added base for ClaimsTable
 * - Handle blocked-user and protected-page different in UI
 * - Added ClaimRow data structure
 * - optimized imports
 * - Added internal snak type restriction to ValuelessSnakStore
 * - Improved test ValueSnakStoreTest-&gt;testStoreSnak
 * - Rename QueryEngine Updater to Writer
 * - Added tests for exception cases
 * - Implemented ValueSnakStore-&gt;storeSnakRow
 * - Merge SomeValueSnakStore and NoValueSnakStore as ValuelessSnakStore
 * - Split SnakRow into ValueSnakRow and ValuelessSnakRow
 * - Implemented SnakRow-&gt;getInternalSnakType and added tests for SnakRow getters
 * - Added SnakRow-&gt;getInternalSnakType
 * - NoValueSnakStore now takes a tableName rather then tableDefinition
 * - Update field names of valueless snaks table for clarity
 * - Implemented NoValueSnakStore-&gt;storeSnakRow
 * - Renamed SnakStore-&gt;storeSnak to SnakStore-&gt;storeSnakRow
 * - Rename StoreSnak to SnakRow
 * - Removed unused imports
 * - Updated SnakStore interface to use StoreSnak data structure
 * - Introduction of StoreSnak class
 * - Spell-check: occured -&gt; occurred
 * - Fix query interface mocking
 * - Consistency tweak: article -&gt; page
 * - Remove usage of ValueFormatters\Result
 * - Remove usage of ValueParser Result interface
 * - Removing me as author since this code changed into something I do not want to be associated with
 * - Renamed/Moved toolbar jQuery widgets
 * - Introducing toolbarbase widget
 * - Add newline otherwise translatewiki.net scripts freaks out
 * - refactor testCanStore method down
 * - Added NoValue and SomeValue SnakStores
 * - Added SnakStore and some initial implementation
 * - wikibase.ui.Toolbar: Fixed using incorrect scope reference
 * - Some implementation for in the SQLStore updater
 * - Added QueryStoreUpdater tests
 * - Remove unused imports
 * - Generalized access to Claims by property ID.
 * - Remove unused imports
 * - Remove unused import
 * - Added COPYING INSTALL README and RELEASE-NOTES to WikibaseQuery
 * - Removed ObservableQueryInterface