Changelog
tilttek/generatorPas encore traduite
Cette page n'est pas encore traduite en français ; elle est présentée en anglais.
All notable changes to tilttek/generator will be documented in this file.
Updates should follow the Keep a CHANGELOG principles.
0.1.0-alpha - 2026-11-12
Added
- The definitions:
Entrywith its text, weight, fields and tags, read like an array;EntryList;Template;TextBodywith its filters,ObjectBodywithTemplateFieldandGenerateField,GridBodywithMapLayoutsquare or hex,GraphBodywith fixed or rolled nodes and extra passages;GeneratorDefinitionwith its variables and language and its state ofStateValues, start and next templates, at most 32 by names that a variable or a field of the generator does not take;MarkovChainwith its order, its lengths and whether entries come out;EntryListthat invents words by a chain;Catalogby name, refusing duplicates. ReaderandFileLoader: YAML and JSON documents, one or many lists and generators by file, a list as a sequence of entries or as a map of itsentriesand itsmarkovchain, a generator'sstate, directories searched in depth in the order of their paths, and each error with its place;Reader::isName(), which a name with a line break after it does not pass.Generator: every template, a state's included, compiled in Twig's sandbox when the catalog is built, and every problem listed in oneInvalidCatalog— syntax, tags, filters, functions and tests outside the sandbox, the range operator, unknown lists, tags and generators, unknown languages and filters, dice expressions that do not parse.- The templates' functions:
pickby weight, by tag, several without duplicates, with exclusions, the entries of a list filtered on the same tags kept from one pick to the next with their running weights, up to 64 filters by list;generate, once or several times without duplicates;rollontilttek/dice; variables shared by a result; structured results whose fields see the earlier ones; text with its spaces made one. - The grammars and their filters
elide,article,agree,pluralandupper_first: French elision, forms before a vowel, contraction, aspirated h, articles, feminine and plural with their exceptions; Englishaandan, articles and plural with its irregular words; Spanishelbefore a stressed a,delandal, articles with the neuterlo, feminine and plural with their written accents; German nominative articles by gender, contractions of a preposition and the article, plural by ending with its irregular words; Italian articles by the next sound, elision, articulated prepositions and partitive, feminine and plural with their irregular words; Portuguese articles, contractions withde,em,aandpor, feminine and plural with their irregular words, and the count 0 of Brazil and of Portugal; the markGrammar::KEEP(^) that keeps a word and the word before it as written; theGrammarport, documented, by which an application adds or replaces a language;Grammarsby locale, usual form of the locale or language. - Markov lists: a pick invents a word letter by letter from the runs of letters the chain learnt of the entries, counted
by their weight, filtered by the tags of the pick, which the word carries; capitalised when every entry is; within the
shortest and the longest length; never an entry unless the chain allows it; several without duplicates and none
excluded, compared without regard to case; 50 attempts by word, each counted as a pick, then
ExhaustedList; the chain learnt once by list and tags. - Tables with a memory: a generator's state, each value given by its start template when the previous state lacks it, by
its next template otherwise, or kept, its templates seeing
previousandstate, then the variables and the body seeing both; threaded through the results of a draw, a unique draw dropping a repeated result and the state it left; a value longer than 1024 characters stops the draw; another generator calling it starts it again. - Random tables in
tables/, each a file standing alone undertable.<name>: encounters by terrain, magic items, loot with unidentified items, shops with their merchant and stock, adventure hooks, rumours of a place, a solo play oracle weighing the odds and a chaos factor, and fortunes from cards or tables; written in English intables/en/and in French intables/fr/, the two versions of a table with the same lists, generators, state values and fields;Tableswith their names, languages, and the directory and files of each language. - The maps: square cells with
xandy, hexagons with offset and axial coordinates, graphs whose nodes are all reachable, with extra passages, in order. - Draws:
Drawwith a count, uniqueness, a seed and the previous state, at most 32 names to texts of at most 1024 characters, in UTF-8,DrawResultthat says when it is short and carries the state a generator with a memory is left in, unique results within a bounded number of attempts, seeded draws onXoshiro256StarStar, andLimitson depth, picks, time of a result, attempts, results, cells and time of the whole draw, the times checked at each pick and before each template is rendered, withTimerandSystemTimer; nothing of a draw kept for the next one but the entries filtered by tag, so that a long-running process can serve one draw after another. - Exceptions under
GeneratorException:InvalidDefinition,InvalidCatalogwith itsProblems,UnknownGenerator,UnknownList,UnknownTag,ExhaustedList,LimitExceeded,GenerationFailed; an exception of the library thrown inside a template reaches the caller unwrapped. - Neutral examples: syllabic names, names invented by a Markov chain, a yes-or-no oracle, an inn in French, a village, a dungeon, and three tables with a memory — the weather as a hex flower, a journey and a hexcrawl.
- The documentation in
doc/, one file per topic, indexed by the README. CONTRIBUTING.md,SECURITY.mdandCODE_OF_CONDUCT.md.