Project

General

Profile

Activity

From 2013-05-28 to 2013-06-10

2013-06-10

11:09 Revision fadc08be (github): Refactor: Improved _E() macro for easier usage
The argument to the macro is now automatically converted to a string
literal.
skyjake
08:20 Revision 7787174e (github): Fixed|Windows|Installer: Deploy the 'gui' Doomsday Script module
The previously missing 'gui' module is now deployed in the Windows
installation.
skyjake

2013-06-09

20:43 Revision 1f2d633c (github): Fix build (nodeindex_t unknown in m_nodepile.h)
danij
19:41 Revision f2b26fec (github): Refactor|EntityDatabase: EntityDatabase now a C++ class; allocated with Map
danij
19:15 Revision 70d4f75d (github): World: Cleanup
danij
18:48 Revision 80cc67bf (github): Client|Widgets: Added basic implementation of ScrollAreaWidget
skyjake
18:47 Revision a109d652 (github): Fixed|Client: Use of tabs in the 'version' command
skyjake
18:46 Revision 623a1840 (github): Refactor|libdeng2|RuleRectangle: No need to have a public Clock observer
skyjake
18:46 Revision bb2f0081 (github): Refactor|Widgets: Conditional tree notification, pre/post handlers
Improved the widget tree notification mechanism to include an optional
condition callback and pre/post handlers to be...
skyjake
13:24 Revision ae3e7d03 (github): Documentation|libdeng2: Fixed apidoc issues
skyjake
12:18 Revision 17faacfa (github): Refactor|Client: GuiWidget is derived from QObject
All widgets will benefit from signals and slots. skyjake
09:48 Revision 3c9e6c07 (github): Fixed|Client|Font|RichFormat: Popping formats off the stack
When returning to an earlier format using the "." escape sequence,
the tab stop and indent mark must be unaffected.
skyjake
09:07 Revision fc3ada0b (github): Map: Basic API for accessing editable elements
There is also no longer a need to use the editable element mechanism
for the EntityDatabase.
On server side storage ...
danij
09:00 Revision 4229ac2c (github): Documentation|libgui|Font: How to use indentation and tab stops
skyjake
08:41 Revision d7bafbc8 (github): Cleanup: Removed redundant fatal errors
skyjake
08:39 Revision 5c235fe8 (github): Cleanup
skyjake
08:17 Revision c464c31f (github): Map: Encapsulate BSP construction and map element finalization
danij
08:05 Revision 49039fd1 (github): Map: Encapsulate the editable map element LUTs
danij
07:25 Revision 832d7ab5 (github): Map: Provide access to the map element LUTs via the API only
danij
06:59 Revision 853db991 (github): Map: Encapsulate initialization of the various Blockmaps
danij
06:12 Revision ef35a431 (github): Refactor: Renamed edit_map.cpp as world/api_mapedit.cpp
danij
05:54 Revision f2c8dc47 (github): Merge branch 'revise-map-geometry-generation' of github.com:skyjake/Doomsday-Engine into revise-map-geometry-generation
danij
05:53 Revision 33afe8cb (github): Refactor: Moved editable map elements into Map
Upon instantiation a Map is initially configured in editable mode.
The map edit API calls Map::endEditing() to signal...
danij
05:50 Revision b0d6b78d (github): Refactor: Moved editable map elements into Map
Upon instantiation a Map is initially configured in editable mode.
The map edit API calls Map::endEditing() to signal...
danij
03:37 Revision 5013d252 (github): wip 1
danij

2013-06-08

22:55 Revision 32c5301d (github): World: Improved console output
Also tried out the new rich formatting with the current map element
information (is this right?).
danij
22:00 Revision 9d3020d1 (github): Fix typo
danij
21:45 Revision 434fa66b (github): World: Cleanup
danij
19:58 Revision 35a31c07 (github): Refactor|World: Merged MapArchive functionality into World
danij
17:26 Revision a0b83949 (github): Add missing blockmapvisual sources
Must have been inadvertently omitted in the earlier move. danij
17:22 Revision 269bfe4f (github): World: Encapsulate MapArchive
Todo: There is no longer any benefit to separating the MapArchive
now that we have a World. MapArchive functionality ...
danij
16:37 Revision 8f7f40de (github): Merge branch 'master' into revise-map-geometry-generation
danij
16:30 Revision e2b78719 (github): World: Added World abstraction and encapsulated various global functions
Todo: MapArchive should be owned by the world. danij
15:27 Revision ff47d827 (github): Client: Improved console output of various commands/subsystems
Applied rich formatting and generally improved the console message
output.
Note that the monospace formatter doesn't...
skyjake
15:23 Revision 4fcf0b60 (github): Refactor|Client|Widgets: Use the _E macro instead of DENG2_ESC
skyjake
15:22 Revision fadd6924 (github): Fixed|Client|LogWidget: Ensure visible range is not too small
When the visible entries are very tall, the potentially visible range
would be quite narrow.
skyjake
15:21 Revision 1c34193d (github): Client|GLTextComposer: Apply line alignment
skyjake
15:20 Revision 948cbdf7 (github): libdeng2: Added a shorter macro for DENG2_ESC()
skyjake
09:56 Revision 1a14af3e (github): Client|GLTextComposer: Improved positioning of line segments
The width of the rightmost line segments may now be contracted up to
15% to make them fit onto the available maximum ...
skyjake
09:53 Revision 666c5218 (github): Client|FontLineWrapping: Apply tab stops to line segments
skyjake
09:53 Revision d24024fd (github): libgui|Font|RichFormat: Revised interpretation of tab stops
Each range in the rich format is assigned a tab stop number. skyjake

2013-06-07

22:52 Revision 7c6a65e6 (github): Client|GLTextComposer: Align line segments based on tab stops
Todo: Cleanup. skyjake
16:44 Revision e6af6354 (github): Refactor|Client: Lines can be composed of smaller segments
Tab stops and alignment of content between lines require that the
parts are positioned at GL drawing time rather than...
skyjake
16:41 Revision 5b60f8b5 (github): Cleanup
skyjake
15:51 Revision 6c0d2054 (github): Client|Default Style: Slightly darker background color
skyjake
15:09 Revision 631e9401 (github): Refactor: Moved blockmap debug visual to render domain
danij
14:39 Revision c30c939a (github): Cleanup
skyjake
14:20 Revision fec92835 (github): Dumped unused and obsolete dam_file.cpp/h
danij
14:15 Revision 656093fd (github): Refactor|libgui|Font: Use EscapeParser to set up rich formatting
Also cleaned up the implementation by applying the pimpl idiom. skyjake
14:14 Revision b64eed7a (github): Fixed|libdeng2|MonospaceLogSinkFormatter: Filter out escape sequences
Monospace log output does not use style formatting. skyjake
14:13 Revision e6373b9a (github): libdeng2: Added EscapeParser
Utility for parsing a text string with ASCII Esc (0x1b) escape
sequences, used for rich text formatting in libdeng2.
skyjake
13:54 Revision b9f73d24 (github): Refactor: Split up p_dmu.h; produced DmuArgs from setargs_t
danij
12:12 Revision 679f9bb1 (github): Refactor: Moved Mesh geometry components out of the world module
danij
11:51 Revision 05751f90 (github): Documentation: Renamed "map" module as "world"
danij
11:46 Revision 8e5125be (github): Refactor: Renamed GameMap as Map
As this class is now present in the world module and defined in the
de namespace there are now no collisions for the ...
danij
09:31 Revision 2dcdebcc (github): Refactor: Renamed "map" module as "world"
danij
09:01 Revision b29998cb (github): Merge branch 'master' of ssh://github.com/skyjake/Doomsday-Engine
skyjake
09:01 Revision 60417152 (github): Console: Styled output for the "version" command
Todo for later: Using the style escape sequences this way is a bit
cumbersome. A more user-friendly HTML-like markup ...
skyjake
08:58 Revision 0ee092dc (github): Client|FontLineWrapping: Cleanup
skyjake
08:58 Revision 16050e7e (github): libgui|Font|RichFormat: Added escape sequences for tab positions
These will be used for aligning text on a line. skyjake
07:01 Revision a9c2ac0f (github): Improved/standardized various log messages output when loading a map
danij
06:59 Revision cdb92869 (github): BspLeaf: Cleanup
danij
06:57 Revision 9e564ec5 (github): Documentation|BspLeaf|BspNode|Segment: Improved apidocs for BspLeaf, BspNode and Segment
danij
06:55 Revision 6563e4c0 (github): Mesh: Added (Element) base class for all mesh geometry elements
Plus cleanup. danij
01:18 Revision b5e7f0dc (github): Merge branch 'master' into revise-map-geometry-generation
danij
01:17 Revision 774d3be9 (github): Client|LabelWidget: Fix build warning (switch with no case)
danij

2013-06-06

22:39 Revision fed9a736 (github): Client|Widgets: Echo commands in the log when entered
skyjake
20:23 Revision 83432451 (github): Merge branch 'master' into revise-map-geometry-generation
danij
18:46 Revision 572d1c2e (github): GameMap: Cleanup
danij
12:42 Revision 38838912 (github): Fixed|libgui: Inserting more than one character at a time
The cursor position needs to be moved according to the amount of
characters inserted.
skyjake
12:34 Revision 1ed818a5 (github): Documentation|Client|Widgets: Cleanup and more apidocs
skyjake
11:06 Revision 00634674 (github): Fixed|Games: Notification about changing the current game
DD_ChangeGame is responsible for actually carrying out the changing
of the current game, so the audience must be noti...
skyjake
09:50 Revision a6d22756 (github): Fixed|Resources: Crash when loading/rendering models (boxed jDRP)
There were two issues after the removal of the fixed submodel limit:
1) A model definition may have no submodels at ...
skyjake
07:25 Revision 7e136930 (github): BspLeaf: Encapsulated access to BiasSurface data
danij
06:44 Revision 7dda0630 (github): Refactor|GameMap: Reworked GameMap_* funcs for thinkers/clmovers into class methods
danij
05:22 Revision f56ae7c2 (github): Refactor|GameMap: Moved GameMap to namespace de
Note that the global theMap variable was also moved. danij
04:25 Revision dc49eee0 (github): Mesh: Added mesh element count accessors
danij
03:46 Revision 9aa3d9e4 (github): BspLeaf: Provide direct access to the assigned Face geometry; cleanup
danij
01:32 Revision b47d24f4 (github): Refactor: Renamed Polygon as Mesh; given ownership of half-edges
All Face and HEdge components of a Mesh are now owned by it. Polyobj
now has a Mesh of it's own.
danij

2013-06-05

22:39 Revision 066a9f3b (github): Refactor: Separated Face from Polygon
All components and map geometry model abstractions for the half-edge
data structure are now implemented.
Todo: Gener...
danij
21:52 Revision 5d3d2a92 (github): Removed inadvertently committed file
skyjake
21:42 Revision 88c141dd (github): Fixed|Client: Out-of-bounds access in font line wrapping
If there was a very narrow line width, the wrapper would get confused. skyjake
20:30 Revision 285c9d6e (github): Fixed|Unix|libgui: System header conflict related to key press/release
The X headers defined symbols that caused a mixup between key press
and release events.
skyjake
20:28 Revision f7355723 (github): Client|Input: Use native key repeat events
Our own repeat events do not behave very well if the framerate is
very low (repeats excessively even when key-up alre...
skyjake
18:58 Revision 972a896d (github): Fixed|Unix|libgui: Text bounds measurements
Also defined some fonts for Unix in the client's Default Style pack. skyjake
14:18 Revision bce1edf2 (github): Fixed|LogWidget: Rendering glitch related to atlas optimization
As the entry atlas is used in a dynamic fashion, defragmentation is needed
to free up fragmented space. However, if d...
skyjake
14:16 Revision 1584a52f (github): Windows|Client|libgui: Adjusted fonts and font rasterizing
The text rasterization bitmap's width was one pixel too small. Also changed
the default Windows font.
skyjake
14:14 Revision 46890eee (github): Windows|Input: Enabled Qt mouse events for widget interaction
The normal Qt mouse events are used when mouse is untrapped. skyjake
09:19 Revision 13ff313f (github): Fixed|LogWidget: Release excess entries in the atlas
Entries outside the potentially visible range are released from the
atlas. Fixes a problem where the atlas would get ...
skyjake
09:18 Revision 75f4d8ce (github): Refactor|Client: GLTextComposer is an Asset
skyjake
09:18 Revision 3a23bfdf (github): Unix: Fixed build
skyjake
07:39 Revision 41a82fa3 (github): ConvexSubspace: Roughed out a basic algorithm for separating discordant line segments
Other than the expected z-fighting issues, the "extrasegs.wad" test
case is now rendered correctly.
There is still m...
danij
02:52 Revision 6209efd3 (github): ConvexSubspace: Encapsulate all BSP leaf geometry generation
danij
01:41 Revision be4d749d (github): BspLeaf: Build the ordered segment list when a Polygon geometry is assigned
danij
00:49 Revision 2e01b4cc (github): Cleanup
danij
00:13 Revision 547dba37 (github): Refactor: Separated Segment from HEdge; BspLeaf provides ordered segment lists
danij

2013-06-04

21:58 Revision 758fa496 (github): Windows: Fixed build issues and widget initialization
skyjake
21:57 Revision 6d4da2ff (github): Windows: Fixed various issues (exports, GL context)
skyjake
14:49 Revision 99f19d3c (github): Cleanup
skyjake
14:45 Revision 85507925 (github): Refactor|Client|Widgets: GuiWidget stores/updates common style properties
Also cleaned up colors.dei in the Default Style pack a little with
new gui module color operations.
skyjake
14:14 Revision a7a4b13a (github): Fixed|Client: Use the correct font when rasterizing text for GL drawing
The font used by the font line wrapping was not always applied when
GLTextComposer rasterized the lines.
skyjake
14:13 Revision a8758db5 (github): Client|Task Bar: Clear command line when dismissing console
skyjake
14:12 Revision 44f0f3b6 (github): libdeng2|Widget: Added the behavior flag 'ContentClipping'
skyjake
09:27 Revision a62f272f (github): libgui|Font: Clearing a RichFormat
skyjake
09:27 Revision c4b62779 (github): Client|Task Bar: Improving usability
Tweaked behavior of Shift-Esc vs. Esc: Shift-Esc no longer opens
the menu, just the task bar with the console focused...
skyjake

2013-06-03

22:20 Revision 66f6c671 (github): Refactor|Client: Common GuiWidget opacity
The console command line is made more transparent when it is out of
focus.
skyjake
16:24 Revision 8bbbbb24 (github): Refactor: Attribute half-edges to Polygons and polygons to BspLeafs
danij
15:35 Revision df5d94a1 (github): BSP Builder|SuperBlockmap: Cleanup
danij
12:56 Revision f6faeb7c (github): Client|UI: Improved integration between task bar, console, and game
The console widget is now a more integral part of the task bar. The
command line is in the task bar, and when it gain...
skyjake

2013-06-02

21:39 Revision 2280dd7b (github): Client|UI: Adjusting mouse trapping behavior wrt task bar
As a rule, the mouse is untrapped when the task bar is opened. Loading
a game will hide the task bar and automaticall...
skyjake
18:34 Revision 550a02da (github): Fixed|BSP Builder: Space partitioner logic error resulting in mismatched sectors
When building line segments along the partitioning half-plane care
must be taken with the edge case of intercept poin...
danij
17:43 Revision 5807d0ee (github): Client|UI: Opening and closing the task bar
The task bar appears automatically when pressing Esc. This will also
open the game menu.
skyjake
17:38 Revision 02069a43 (github): Client|LabelWidget: Opacity property for labels
Todo: Opacity should be a common property for all GuiWidgets. skyjake
13:16 Revision f1e83107 (github): Client|TaskBarWidth: Control Panel opens when clicking the DE icon
The gear button is not needed right now after all. skyjake
13:15 Revision 546c277c (github): Client|LineEditWidget: Show a frame on hover to indicate focusability
skyjake
12:16 Revision e674e4e5 (github): Default Style|TaskBar: Added a gear icon for the Control Panel
In the future, this can be used for Settings menus. skyjake
11:15 Revision c6b6bead (github): Client|TaskBarWidget: Added buttons for toggling console, opening panel
These are temporary. skyjake

2013-06-01

22:29 Revision 6d4342e2 (github): Client: Removed the old console UI
The new ConsoleWidget is now responsible for the console UI. The rest
of the console mechanism (command execution, va...
skyjake
16:06 Revision 1381b349 (github): Client|ConsoleWidget: Opening and closing
The new console widget is starting to be functional enough to allow
dropping the old one.
skyjake
13:54 Revision cf75e943 (github): Fixed|BSP Builder: Space partitioner logic error resulting in mismatched sectors
When building line segments along the partitioning half-plane and one
of the pair of intercepts has no sector on the ...
danij
13:26 Revision 430d076f (github): Client|LogWidget: Scrolling the history with mouse wheel
skyjake
13:05 Revision 32683705 (github): libgui: Mouse wheel motion types
There are two kinds of mouse wheel motion we are interested in:
free movement for scrolling, and discrete steps for p...
skyjake
13:04 Revision f8f2ca7f (github): Client|Widgets: Resizing the console using the mouse
skyjake
13:03 Revision 7a691d50 (github): Client|GuiWidget: More generic hitTest() method
skyjake
13:02 Revision 1e06ecea (github): Refactor: Renamed to DENG2_STR_ESCAPE() macro
skyjake
09:01 Revision 3a1bfb1d (github): Client|Widgets: Added a top margin for LogWidget
Having some space at the top balances the content better. skyjake
03:05 Revision e9c13a1f (github): ConvexSubspace: Cleanup
The geometry generated by the space partitioner is now looking pretty
clean with no partial overlaps and only "duplic...
danij
02:32 Revision d7669c5c (github): Fixed|Line: Oversight in Line::considerOneSided()
An id Tech 1 format map with a LINEDEF sporting an unnecessary second
SIDEDEF will typically result in a degenerate B...
danij

2013-05-31

23:02 Revision a8e16dea (github): BSP Builder|Partitioner: Partially overlapped line segments now split whilst partitioning
Previously line segments that partially overlapped yet did not break
the subspace convexity rule were not split, ulti...
danij
22:27 Revision 3562e79e (github): Client|Widgets: Use the mouse click utility in Button and LineEdit widgets
Also cleaned up the ButtonWidget implementation and allowed
LineEditWidget to receive events even though not in focus...
skyjake
22:25 Revision e961afcb (github): Client|GuiWidget: Utility for handling a mouse click sequence
A mouse click sequence consists of pressing a button on the widget
and then releasing the button either inside or out...
skyjake
22:22 Revision 9d837eeb (github): Client: Offer all mouse events first to WindowSystem
The events will be given to the legacy input mechanism if the new one
doesn't want them.
skyjake
22:21 Revision e9160913 (github): Client|GuiRootWidget: Routing all mouse events to a widget
skyjake
22:20 Revision fd039bb4 (github): libdeng|Widget: Added generic event routing mechanism
A Widget can now be configured to route specific types of events
to a particular widget. This is for the purpose of r...
skyjake
22:07 Revision 12491643 (github): libgui|MouseEvent: Include position in button events
skyjake
14:38 Revision 32e31eb6 (github): Client|ButtonWidget: Check for mouse hover, react with an effect
skyjake
14:37 Revision 023a9ca0 (github): Fixed|Client|ConsoleWidget: Enable page keys when log has been expanded
skyjake
14:28 Revision e8fe90c2 (github): Refactor|Client|Widgets: Added common GuiWidget background geometry
All widgets can now use GuiWidget::Background to specify what kind of
a background should be drawn for the widget.
A...
skyjake
14:25 Revision c2bcd7f3 (github): libdeng2|Widget: Added behavior flag for marking widget 'unhittable'
skyjake
08:11 Revision 82f4af7a (github): Refactor|libgui|Client: Mouse events
A MouseEventSource now produces actual MouseEvent instances that
can then be passed on to whoever handles events. Add...
skyjake
08:08 Revision c2eb94f1 (github): Refactor: Renamed castTo<> to as<> in Info and Event
If C# has taught me anything it is that "as" is quite an intuitive
keyword for casting.
skyjake

2013-05-30

18:27 Revision 51c74f5b (github): Client|ConsoleWidget: Improved integration with LogWidget
When in non-expanded mode, the console will expand the console when
pressing PageUp/Dn, instead of scrolling the log.
skyjake
18:25 Revision c3020ca8 (github): Client|TaskBarWidget: Basic elements
Added current game mode indicator and the engine version number with
a DE logo.
skyjake
18:24 Revision 34d746e8 (github): Client|LabelWidget: Image scale modifies source image's effective size
skyjake
15:05 Revision 745f59d7 (github): BSP Builder|ConvexSubspace: Began work on convex subspace's segment continuity map
Once finalized this algorithm will replace the heuristic analysis
for BSP leaf sector determination (as well as separ...
danij
12:20 Revision 916e0d1f (github): Client: Cleanup
skyjake
12:16 Revision 86fe9695 (github): Client|Widgets: Simple gradient frame for the button widget
skyjake
12:01 Revision b1c01233 (github): Client: Interaction between console and log widgets
When new log entries arrive, the console widget's height increases
accordingly. Added a content Y offset to the log w...
skyjake
11:59 Revision 7cc005ec (github): Fixed|Client: Build failure
skyjake
11:58 Revision 5d27ddf8 (github): libdeng2|OperatorRule: Convenient way to construct a Maximum operator
skyjake
11:58 Revision 6e99bc90 (github): libdeng2|Animation: Added copy constructor and assignment operator
skyjake
09:51 Revision d44d1481 (github): Client|Widgets: Working on the task bar and console widgets
Lots of unfinished work here…
Added a logo of size 128x128 to the Default Style pack.
skyjake

2013-05-29

18:28 Revision e6442cd3 (github): Client|GuiRootWidget|VertexBuilder: Drawing rounded corners
GuiRootWidget now has a general purpose texture for drawing rounded
corners with. VertexBuilder can be used to set up...
skyjake
15:46 Revision b83ff540 (github): Client|LogWidget: Fixed scrolling glitches, scroll to top/bottom
skyjake
15:28 Revision da4e2a92 (github): Merge branch 'master' of ssh://github.com/skyjake/Doomsday-Engine into ui-framework
skyjake
12:06 Revision 4617fd91 (github): Refactor|Client|LabelWidget: Allow subclasses to modify widget behavior
A subclass may augment the label's geometry or modify the MVP matrix.
Todo for later: Some of this may be generaliza...
skyjake
09:54 Revision 9d086229 (github): Fixed|Client|LabelWidget: Drawing text at the correct position
skyjake
09:42 Revision 5b59180f (github): Fixed typo
skyjake
09:37 Revision 3d6ec72e (github): Client|Widgets: Added LabelWidget
A label consists of an image plus styled text (both are optional). This
will serve as a base class for the ButtonWidget.
skyjake
09:29 Revision 936b5669 (github): Client|Cleanup: GuiRootWidget provides a texture with a solid white pixel
A shared texture with a single white pixel is quite useful in many
widgets (at least until skin textures are added).
skyjake
09:27 Revision 0047e5a8 (github): libdeng2|RuleRectangle: Clearing an input rule
skyjake
09:26 Revision 2f69fb4c (github): libdeng2|Vector|Rectangle: More methods for Vector and Rectangle templates
skyjake
09:25 Revision a1a9829e (github): Client|Default Style: Added square logo graphic, tweaked fonts of OS X
skyjake
08:11 Revision 6299f79d (github): Refactor|BSP Builder|SuperBlockmap: Added SuperBlock::collateAllSegments()
danij
07:22 Revision cfec7721 (github): Refactor|BSP Builder: Numerous cleanup refactorings
danij
06:42 Bug #1114: [Snowberry] Runtime Error (Errno 22) on "Play"
I'm unable to do any Windows XP debugging, so unassigning this... skyjake
06:03 Revision 39cb5697 (github): Refactor|HEdge: Removed HEdge's now unused copy constructor
danij

2013-05-28

15:26 Revision 0fd04404 (github): BSP Builder: Made ConvexSubspace responsible for producing leaf geometries
danij
13:36 Revision 62b4476d (github): Client|Widgets: Cleanup
skyjake
13:35 Revision 3105b807 (github): Client|Widgets: Apply Alignment template, GLTextComposer color argument
skyjake
13:35 Revision d5a15626 (github): Client|Widgets: GuiRootWidget has a public uniform for the shared atlas
All widgets can use GuiRootWidget::uAtlas() in their shaders to bind
to the shared UI atlas.
skyjake
13:33 Revision 18099ece (github): Refactor|libgui: Interface cleanup
skyjake
13:33 Revision eab4b49d (github): libdeng2|Rectangle: Added methods (area, isNull, moved)
skyjake
13:33 Revision 2479a431 (github): Refactor|Client: Moved alignment flags to a separate header, added templates
skyjake
12:36 Revision e2937ee8 (github): BSP Builder: Deferred leaf geometry generation until after partitioning
danij
 

Also available in: Atom