The ClashResolver, or a memory_book variable therein, triggered a
stack-use-after-return segfault. Fixed by initialising the ClashResolver
in main() and passing it to InitClashResolver() by pointer, rather than
initialising it in InitClashResolver().
The colour computed for topic dots and put into cinera_topics.css in HSL
format has its lightness value modified depending on whether it's on a
dark or light background. Web browsers do not tell us an element's
computed colour in HSL format, but in RGB, so we would need to convert
it from RGB to HSL when setting the lightness. Previously, this
conversion was busted, calculating too small a value for the saturation.
This commit obviates the need for any RGB→HSL conversion by writing the
hue and saturation values as attributes to the elements, which the
function responsible for setting the lightness may use directly.
It is possible to bring our player out of fullscreen mode without using
the provided views menu or keyboard shortcut, e.g. by pressing Escape.
Doing so leaves our state in the SUPERTHEATRE view, which omits
SUPERtheatre mode itself from the views menu. This commit fixes this by
switching our state to the THEATRE view.
Thanks to Aske Bisgaard Vammen for the report.
This commit fixes spurious scrolling in DeriveReliableWindowDimensions()
on mobile. It also fixes centring of Vimeo videos on mobile.
In addition, it replaces some deprecated JavaScript:
• window.orientation → screen.orientation.type
• window.onorientationchange → screen.orientation.onchange
This commit adds keyboard navigation of the indices, documented in the
"Help" text box. It also improves scrolling of menus to follow progress
through the video, with the ability to centre the scrolling around a
range of references. Finally in this UI work, it enables the keyboard
and mouse to work more cooperatively.
Other changes:
• Added a "Clear" so the player's initial sizing happens invisibly.
• Fixed getBackgroundColourRGB() to handle both rgb() and rgba().
• Deduplicated code, including spurious querySelectorAll() calls.
• Moved global variables into the Player object.
This commit fixes the sizing of the player's menus to not protrude below
the player.
It also adds scrolling of the references menu to the first menu item
cited in the newly-current timestamp, and fixes scrolling of the markers
container when switching to a timestamp after the user has scrolled the
container away from its default position.
This commit adds support for tracking and resolving clashes of output
locations. Previously open-ended clash dependency chains could passively
resolve across multiple Cinera invocations (undesirable, but possible);
whereas closed-loop dependency chains could not resolve without the user
manually resolving them by moving one clash to a temporary location (not
acceptable). This new support handles such clashes in one fell swoop.
Other smaller changes in this commit:
• Change message_control to use memory_book
• Fix deletion of old .index files when reorganising projects
• Fix deletion of moved entries when subdividing projects
This commit adds support for deduplication of messages emitted by
PrintEdit(). It's a first pass, only supporting single-line messages and
ones no larger than 512 bytes.
It also fixes StringContains() to skip strings shorter than the search
substring, and emits a more sensible error on empty "output" value.
This commit replaces ClearCopyStringNoFormat() with
ClearCopyStringNoFormatOrTerminate(). All calls to that function
passed an implicitly 0-terminated string as the destination, meaning
that we don't need to 0-terminate them and, in not doing, we free up a
byte to store data.
It also deduplicates code as CopyBytes(), and does a little bounds
checking before actually trying to copy.
This commit adds support for configurably enabling closed captions by
default. Set the "default_cc_lang" in a config file, or "cc_lang" in the
[video] node of an .hmml file. Once set, videos which contain captions
for this langage will be initialised with these captions enabled.
New config setting:
default_cc_lang
New [video] node field:
cc_lang
This commit fixes ResizeFunction() to scroll back to the original Y
position, rather than the nexus (i.e. the grid or list), after resizing
the grid as a result of the window having been resized.
This is a hotfix made just to allow using a max-length "output" value.
Next commit should fix buffer overflows for all copies to implicitly
null-terminated destinations.
This commit makes the auto-derivation of name abbreviations code handle
quoted nicknames and lower-cased surname prefixes (e.g. du Pré). It also
upstreams the abbreviation to config parse time, and introduces config
fields in the person scope to allow overwriting the auto-derived ones.
Bug fixes:
• Fix null pointer dereference in InsertProjectIntoDB(), due to a
rogue WriteFromByteToPointer() call left in when removing the
_TopLevel() database modification functions in v0.10.14
• Fix config file locking by closing all config files on detecting
a config file change, even if we had no prior working config
• Increase IncludesSearch buffer size from 2 to 4KB
New config fields in the person scope:
• abbrev_initial
• abbrev_given_or_nickname
• abbrev_dotted_initial_and_surname
This commit aims to generalise database structures such that any block
may be traversed without the need for specific functions for each type.
Concretely, it replaces functions like SkipAsset() and SkipProject()
with a generic SkipHeaderedSectionRecursively(). The change also paves
the way for the plethora of new block types due in CINERA_DB_VERSION 6.
This commit aims to help Cinera instances coordinate themselves by
throwing an error upon being instructed to use a database or config
file currently in use by another instance.
• Renumber affected entries when inserting / deleting an entry of an
auto-numbered project
• Prohibit an entry from sharing an "output" with another entry
• Prohibit an entry's "output" from containing a slash
• Fix entry HTML deletion to use OutputLocation, not BaseFilename
New config options:
numbering_filename_prefix (string)
Defaults to $project
numbering_method
auto
filename_derived (default)
hmml_specified
numbering_start (number)
May be used to 0-index the set
numbering_unit (renamed from "unit")
numbering_zero_pad (boolean)
This commit also fixes the size of the "?" help button and category dots
when the wider site uses box-sizing: border-box
This is an unversioned interim commit with unfinalised code.
The threading code establishes job queues.
The code cleanup removes various _TopLevel functions pertaining to
database operations.
To use it, source the cinera_clear.js file at the position in the HTML
file to be obscured while further processing occurs. (Make sure not to
"defer" it.)
After processing is complete, call FlipClear()