1. 2026-06-12 (link): #37
    1. Rename History#ALLOCATION_ID to History#EVENT_ID in order to make the name more understandable.
    2. Rename net.splitcells.gel.solution.history.event.Allocation to net.splitcells.gel.solution.history.event.AllocationChange in order to make the name more understandable.
  2. 2026-04-23 (link): #37 Make lookup system easier to understand by renaming its interfaces and classes.
    1. Rename LookupComponents to LookupMethods.
    2. Rename AllocationLookupComponents to AllocationLookupMethods.
    3. Rename LookupColumn to LookupTableBasedColumn.
    4. Rename LookupColumn to LookupColumnImpl.
    5. Rename PersistedLookupView to LookupTable.
    6. Rename PersistedLookupViewI to LookupTableImpl.
  3. 2026-04-14 (link): #37: Expand AccessController, so it can hold user session specific data and also provide a way to share data of one user across user sessions.
  4. 2026-04-13 Project End: Do not leak ssh keys etc. in Forgejo workflows.
  5. 2026-04-13 Project Start: Do not leak ssh keys etc. in Forgejo workflows.
  6. 2026-04-12 Project Proposal: Do not leak ssh keys etc. in Forgejo workflows.
  7. 2026-04-08 (link): #37 Implement ThenAtLeastFastRater.
  8. 2026-04-08 (link): #37 Implement HasSizeFast.
  9. 2026-02-16 Project Proposal: Ensure unambiguous rendering.
  10. 2026-02-16 Project Start: Ensure unambiguous rendering.
  11. 2026-02-12 Project End: Make repo process testable and work in parallel.
  12. 2026-02-12 (link): #37 Tables can now be checked, if these are Solution instances instead via Table#lookupAsSolution.
  13. 2026-02-10 Project Proposal: Make repo process testable and work in parallel.
  14. 2026-02-10 Project Start: Make repo process testable and work in parallel.
  15. 2025-12-04 (link): #37 Simplify package structure by renaming net.splitcells.gel.editor.meta.Type to net.splitcells.gel.editor.geal.Type.
  16. 2025-11-20 (link): #37
    1. Create HasMaximalSize rater.
    2. Create Rater#requireVerySimilar helper function, in order to better compare Costs' double values.
    3. Create UniqueValueCountIsAtMost rater.
  17. 2025-11-19 (link): #37: Rename HasMinimalDistanceOfCallRunner#has_minimal_distance_of to HasMinimalDistanceOfCallRunner#hasMinimalDistanceOf, in order to standardize function naming.
  18. 2025-11-08 (link): #37 Create new Not Rater, that inverses a given Rater.
  19. 2025-11-08 (link): #37 Require Rater#rating_before_removal to be implemented.
  20. 2025-09-27 (link): #8: Define HtmlClientImpl#evalIfExists.
  21. 2025-09-24 Project End: Make copies of the webserver thread safe
  22. 2025-08-26 Project End: Migrate repo access from HTTPS to SSH
  23. 2025-08-24 Project Proposal: Migrate repo access from HTTPS to SSH
  24. 2025-08-24 Project Start: Migrate repo access from HTTPS to SSH
  25. 2025-07-26 Project End: Port Shell project to Java and the Network Worker
  26. 2025-06-10 (link): #37 Prefer implicit throw via NotImplementedYet#throwNotImplementedYet, instead of explicit throw #notImplementedYet(), in order to simplify code and allow more centralised error handling.
  27. 2025-06-03 Project End: Grind starting from March 4th to March 16th
  28. 2025-04-29 Blog Article: Consolidating the project's focus
  29. 2025-04-06 Project End: Use Lombok's new val implementation.
  30. 2025-03-24 Project Start: Use Lombok's new val implementation.
  31. 2025-03-16 (link): #59
    1. Define UserHomeFileSystem option, that provides access to ~/.
    2. Define delete methods for file systems.
  32. 2025-03-13 Project Proposal: Use Lombok's new val implementation.
  33. 2025-03-07 (link): #37 Create new code editor backend, that is the basis for a shared editor backend for the code and no-code version.
  34. 2025-02-28 Project Proposal: Grind starting from March 4th to March 16th
  35. 2025-02-25 Project Proposal: Port Shell project to Java and the Network Worker
  36. 2025-02-25 Project Start: Port Shell project to Java and the Network Worker
  37. 2025-02-25 Project Start: Migrate from SourceHut to Codeberg.
  38. 2024-12-14 Project End: Create minimal Java grammar for this project in order to make code less complex
  39. 2024-12-04 (link): #55
    1. Rename LookupComponents#lookup to LookupComponents#persistedLookup.
    2. Define new LookupComponents#lookup methods, that returns a lookup, that may be persisted or not.
    3. Delete LookupFactory and LookupIFactory, as it was not needed.
    4. Rename Lookup related implementations to PersistedLookup implementations.
  40. 2024-11-19 (link): #51 Create wrapper for Java's Collection#stream(), in order to provide own additional methods fluently.
  41. 2024-11-15 (link): #51
    1. Define rating method after line removal instead of before for raters. This makes it possible to create simplified rater implementation.
    2. Deprecate RaterBasedOnLineGroup, as it is too complicated. Create LineGroupRater as an alternative.
  42. 2024-11-13 Project Proposal: Solve sport lesson assignment
  43. 2024-11-13 Project Start: Solve sport lesson assignment
  44. 2024-11-13 (link): #51 Define description string API of ratings for users.
  45. 2024-10-28 (link): #51 Make Table naming more logical and consistent with public communities like SQL.
    1. Rename Table to View in order to avoid confusion.
    2. Rename Database to Table in order to avoid confusion.
  46. 2024-10-06 Project End: Move personal lib into personal support.
  47. 2024-10-06 Project Start: Move personal lib into personal support.
  48. 2024-09-27 (link): Rename net.splitcells.dem.lang.perspective.Perspective* to net.splitcells.dem.lang.tree.Tree* in order to make code compact and more readable. Also, rename Domable#toPerspective() to Domable#toTree().
  49. 2024-09-25 Blog Article: Disrespecting APIs
  50. 2024-09-20 (link): #26 Migrate Table#toFods, SolutionView#toFodsTableAnalysis and History#toAnalysisFods from XML to Perspective.
  51. 2024-09-08 Project End: Create update command for FUWPD
  52. 2024-09-08 Project Start: Create update command for FUWPD
  53. 2024-09-03 Blog Article: No-Code Editor
  54. 2024-09-03 Project Proposal: Fully bootstrap Network Worker
  55. 2024-09-03 Project Start: Fully bootstrap Network Worker
  56. 2024-08-27 Project End: Grind of 24th of August 2024
  57. 2024-08-27 Project Proposal: Make copies of the webserver thread safe
  58. 2024-08-27 Project Start: Make copies of the webserver thread safe
  59. 2024-08-24 Project Start: Grind of 24th of August 2024
  60. 2024-08-24 (link): #37: Provide optional multi-threading of net.splitcells.website.server.Server#serveToHttpAt. The multi-threading is achieved by using a copy of the ProjectsRenderer for each thread. This minimizes the amount of code needed, in order to achieve thread safety.
  61. 2024-08-22 Project Proposal: Grind of 24th of August 2024
  62. 2024-08-22 Project Start: Grind starting from March 4th to March 16th
  63. 2024-08-06 Project Proposal: Move personal lib into personal support.
  64. 2024-08-06 Project Proposal: Establish Cell API
  65. 2024-08-06 Project Start: Establish Cell API
  66. 2024-08-02 Blog Article: Double-Entry Bookkeeping in IT
  67. 2024-07-28 (link): #26 NameSpace#isXmlAttribute now encodes, if values of that namespace should be rendered as XML attributes.
  68. 2024-07-25 (link): #24 Rename Query#constraint to Query#parseConstraint in order to mark the intent better.
  69. 2024-07-24 (link): #24 Constraint queries can now be used to check for the existence of constraint nodes without creating new constraints.
  70. 2024-07-07 Blog Article: Migration From SourceHut to Codeberg
  71. 2024-06-24 Project End: Make project advertisable
  72. 2024-06-04 (link): #c11 Create a lightweight IDE for the Generic Allocator.
  73. 2024-05-27 Project End: Migrate from SourceHut to Codeberg.
  74. 2024-05-08 Project End: Make the project deployable as a single jar.
  75. 2024-04-26 (link): #c11 Create ssh.download.file command.
  76. 2024-04-26 (link): #c11: Create ServerLog, that outputs log messages as JSON documents in a single line. This is suitable for log files on servers.
  77. 2024-04-14 Blog Article: AssertJ considered unfit
  78. 2024-04-01 (link): #170 Deprecate ResourceOptionI. Implement the ResourceOption API directly instead, by implementing the Option#defaulValue() instead of implementing this via the default constructor.
  79. 2024-03-24 Project End: Provide scheduling tool for schools in general.
  80. 2024-03-24 Blog Article: Providing an experimental school scheduling tool for schools in general.
  81. 2024-03-10 Project Proposal: Migrate from SourceHut to Codeberg.
  82. 2024-03-05 (link): #170 Deprecate OptionI in order to remove all abstraction classes in the future.
  83. 2024-02-24 Project Start: Create minimal Java grammar for this project in order to make code less complex
  84. 2024-02-12 (link): #213 Disallow using ./.net.splitcells.os.state.interface.repo/subs.json for storing the child repo names. Use ./bin/net.splitcells.osi.repos.children instead. Both files have the same format. This simplifies the file structure.
  85. 2024-02-04 Blog Article: Preferring minimal APIs.
  86. 2024-01-07 Project Start: Make project advertisable
  87. 2024-01-02 Blog Article: The Second Reprioritization
  88. 2023-12-30 Project Proposal: Make project advertisable
  89. 2023-12-22 (link): ##252: DefaultOptimization now provides the recommended optimizer for problems in general.
  90. 2023-11-27 (link): #252: Rename logging facilities as such. This avoids, that someone interprets such logging facilities as something else based on their complex names. The idea of a Domsole is not abandoned and therefore such an interface was recreated with an appropriate note.
    1. CommonMarkDui -> CommonMarkLog.
    2. Domsole -> Logs
    3. Pdsui -> LogImpl
    4. Ui -> Log
    5. UiRouter -> LogRouter
  91. 2023-11-19 (link): #213 repo.process now loads the list of sub repositories via ./.net.splitcells.os.state.interface.repo/sub-repo-names and not ./.net.splitcells.os.state.interface.repo/subs.json in order to simplify the format. ./.net.splitcells.os.state.interface.repo/sub-repo-names is now a command that is executed and returns a list of sub repo names, that are separated via new line symbols, which in turn is a csv file. This makes it also easier to make it compatible with other software like hakoerber's GRM.
  92. 2023-10-25 (link): #242 net.splitcells.dem.data.set.map.Map#put now throws an exception, if the key is already present. This is done, because in this case, there is an increased chance, of a programming bug being present. If the value of the map should be updated regardless of the presence of the given key, the method ensurePresence should be used instead.
  93. 2023-10-07 (link): #254: Commit runtime data via JGit instead of git via a shell. This makes using git inside worker easier. It is also a preparation for making the network a portable program, that also could be used for bootstrapping deployments. See #259 for more details.
  94. 2023-10-05 Project Start: Provide scheduling tool for schools in general.
  95. 2023-10-02 Project Proposal: Provide scheduling tool for schools in general.
  96. 2023-07-13 (link): #249 Migrate Java's Path API usage to new FileSystem API, in order to support operation system unspecific deployment.
  97. 2023-07-12 Project Proposal: Make the project deployable as a single jar.
  98. 2023-07-12 Project Start: Make the project deployable as a single jar.
  99. 2023-07-12 (link): #249 Provide file system API in order to not to rely on Paths specific to the operation system.
  100. 2023-07-12 (link): #249 Implement FileSystemViaClassResources in order to provide FileSystem API for class resources. This can be used in order to provide file systems via jar files.
  101. 2023-06-27 (link): #170 Line#values() are now read only, in order to allow more performant code, by not requiring lines to provide a new copy of line values for every Line#values() call.
  102. 2023-06-27 (link): :
    1. Rename ListI#list() into ListI#_list(), in order to simplify autocompletion for import statements in IDEs by avoiding name duplication with Lists#list().
    2. Migrate net.splitcells.dem.utils.ComonFunctions#removeAny to net.splitcells.dem.data.set.Set.removeAny().
  103. 2023-06-21 (link): #170 Table#columnsView now only returns a read-only access to the columns, in order to enable faster alternative Database implementations, that do not have writeable columns. Also, writeable access to the columns via the public interface was never planned. Especially, in the Table interface, that is thought to be a read-only interface.
  104. 2023-06-16 (link): #245 Notify users of echo.error call by default.
  105. 2023-06-15 (link): #170
    1. Rename net.splitcells.gel.data.allocation.Allocation* to net.splitcells.gel.data.assignment.Assignment*, which is more in line with the name of the core model problem the assignment problem.
    2. Provide new Allocations interface, that is the foundation of the Assignments interface. The key difference is, that the Allocations only allows one assignment for each demand and for each supply. This interface can be used instead, in order to improve the performance, if an appropriate usage is possible.
  106. 2023-06-14 (link): ##170: Add DatabaseI#addWithSameHeaderPrefix as a faster alternative to DatabaseI#add, if the line's header to be added to the database is a prefix to the database's header.
  107. 2023-06-11 (link): ##170: Introduce IndexedAttribute in order to access values of Lines faster.
  108. 2023-06-08 (link): #170 Table#columnsView now returns a view of the list, instead of a writeable copy, in order to improve the runtime performance.
  109. 2023-06-06 (link): #248
    1. Delete obsolete class net.splitcells.dem.lang.perspective.PerspectiveXmlRenderer, because it was not used.
    2. Delete obsolete classes net.splitcells.dem.resource.communication.interaction.Dsui & DsuiTest, because it was not used.
    3. Delete obsolete interface net.splitcells.dem.resource.communication.interaction.Sui, because it has no function anymore as the previous classes were removed.
    4. Move content of net.splitcells.dem.resource.communication.interaction to net.splitcells.dem.resource.communication.log, in order to simplify package structure.
  110. 2023-04-13 (link): ##170: Extend Query with optional value containing the Allocations the Query is being applied to. This allows one to create constraints, that depend on the supply and demand Tables of assignments of the given problem.
  111. 2023-04-12 (link): #170 Rename Table#line(int) to Table#orderedLine(int) in order to avoid misunderstandings by avoiding ambiguity.
  112. 2023-04-07 (link):
    1. Rename Table#lines to Table#unorderedLines in order to avoid programmer errors.
    2. Rename Table#linesStream to Table#unorderedLinesStream in order to avoid programmer errors.
    3. Rename LinearInitialization to OfflineLinearInitialization in order to discourage its usage.
  113. 2023-03-30 (link): #170 Require raters to implement toSimpleDescription in order always have a working report, for a given optimization problem.
  114. 2023-03-26 (link): #s109 repo.process should not create the folder of missing sub repos by default. If --command-for-missing is not set or is set as exit 1, the folder
  115. 2023-03-25 (link): Set#remove(Object) will throw an exception, if the given Object is not present inside the set. In this case there is a higher probability, that the developer made a programming mistake, compared to the case, where the to be removed element is really present. If the developer really intended optionally remove an element of a Set, the method Set#ensureRemoved(T) is provided instead.
  116. 2023-03-17 (link): ##170: Introduce HistoryForDatabase for debugging purposes. An instance can be connected to a given database via the DatabaseFactory, which can be viewed via the webserver in order to understand how the content of the given database was created.
  117. 2023-03-17 (link): Revers priorities of LogLevel so that LogLevel.DEBUG.smallerThan(LogLevel.ERROR) returns true.
  118. 2023-03-07 (link): ##170: New GroupId now require an parent GroupId, if the new GroupId is explicitly stated to be a root GroupId. This makes it easier to get the meaning of a GroupId during debugging, if Constraints with overlapping GroupId are present.
  119. 2023-02-26 (link): #170: The development config GelDev now starts the web server in the background, in order to provide GUI access to all Tables of the program.
  120. 2023-02-19 (link): #10: Create DescribedBool for assertions with descriptions.
  121. 2023-02-19 (link): #170: Log if most runtime performant settings are not active.
  122. 2023-02-02 (link): #170: Add meta data container to GroupId.
  123. 2023-02-02 (link): #170: Create container for arbitrary typed values with a type safe interface.
  124. 2023-01-24 (link): Delete system.update implementation for docker. This implementation did not make much sense, as it downloaded the newest version of each image being present. Thereby, no containers were being updated. This also steadily increased the number of local images and therefore storage usage, because the old ones were not deleted.
  125. 2023-01-22 (link): :
    1. \#196 Create sane default config and behaviour regarding temporary data for, i.e. logging:
      1. Store logs etc. at ~./.local/state/net.splitcells.dem/src/main/[file type]/[program name]/[date time of program start]/ by default.
      2. Introduce the option RenderUserStateRepo, in order to render ~./.local/state/net.splitcells.dem, if desired. Thereby, the logs can be found at the website's file layout (/net/splitcells/website/layout.html).
      3. The server now has the internal file /net/splitcells/website/server/config/menu/detailed.xsl, that can be configured. This XSL script generates the website's menu. The result is used for the website's side menu, that is visible on most pages. A dedicated menu page, is also generated by the XSL script and available at /net/splitcells/website/main-menu.html. It has basically the same content as the side menu. While the side menu is not visible on mobile phones in the default layout, the dedicated menu page can be viewed on mobile phones as well. Mobile users have an easy access to this page, via a link at the very top of every page.
    2. \#213: If a CommonMark file starts with the standard license header, the license header is placed at the end of the file during rendering, in order to improve read flow.
  126. 2023-01-22 (link): #s109 Perspective#toXmlStringWithPrefixes now renders leaf nodes as normal strings, if these contain characters that are not allowed in XML element names. For example, the perspective perspective("test", DEN).withChild(perspective("values.", DEN)) will now be rendered as <d:test>values.</d:test>, instead of <d:test><d:val name="values."></d:val></d:test>.
  127. 2023-01-14 (link): : \#27 Introduce net.splitcells.website.server.Config.cssFiles, in order to be able to replace the used css files used by the layout. This in turn improves customizability of the layout, with
  128. 2022-12-02 (link): #27 When IsEchoToFile is set to true, Console does no longer cancel its output to the standard output. If IsEchoToFile is set to true, console output is written to a file and to the standard output.
  129. 2022-11-27 (link): ##8: OnlineLinearInitialization now ensures, demands and supplies are allocated in the same order, as it is present in their respective tables.
  130. 2022-11-27 (link): #183: Create net.splitcells.dem.testing.TestExtensively in order to execute any type of test.
  131. 2022-11-20 (link): #170: Constraint nodes (i.e. ForAll and Then) now internally require an optional parent discoverability path. This is the basis required, so that constraints can be viewed via the web server. The end goal is to provide for each constraint a path, that starts with the problem's path and after that continues with the constraint node's path. For example: /net/splitcells/run/conway-s-game-of-life/forAll/timeSteps points to the constraint node of an instance of conway's game of life, that groups all values according to their time value. In other words, the aim is to provide a unique id for all constraint nodes, that can be easily discovered.
  132. 2022-11-19 (link): : \#s115 Speed up website deployment.: Introduce net.splitcells.website.server.Config.mutableProjectsPath in order to state, if projectsPath can be assumed to stay the same during the web servers execution. This speeds up the rendering of static websites enormously, because ProjectsRendererI caches projectsPath, if mutableProjectsPath is set to true. This in turn greatly improves the performance of RenderingValidatorForHtmlLinks, as it uses projectsPath in order to validate internal links.
  133. 2022-11-18 (link): : \#8: If net.splitcells.website.RenderUserStateRepo is set to true, add the project at ~/.local/state/net.splitcells.dem/ to the default set of projects for the project renderer. This project is used in order to store log files and other documents. RenderUserStateRepo is set to false by default, because this should only be rendered, if the user explicitly wants it, in order to prevent leakage of private information be accident. This could otherwise happen, if the user renders a website with defaults settings and uploads it without checking the results in detail.
  134. 2022-11-18 (link): Recommend chezmoi for dotfile management.
  135. 2022-11-07 (link):
    1. Remove unused methods CommonFunctions#findSystemOutput.
    2. Remove unused methods CommonFunctions#currentTime.
    3. Remove unused methods CommonFunctions#disableSystemOutput.
  136. 2022-10-23 (link): : #s89 Fix cookie issue.
    1. There is now HTML guidelines regarding cookies.
    2. Access to document.cookie is now blocked, by overwriting its getter and setter methods in the standard layout. This ensures, that cookies are not used by accident.
  137. 2022-10-21 (link): : #162 Move project command bin/execute and bin/execute.extensive.tester to the net.splitcells.system project, in order to ensure, that all tests are executed.
  138. 2022-10-16 (link): #168 Integrate repo management.
    1. repo.process now uses bin/net.splitcells.osi.repos.peers in order to find all peer repos, that are on the same folder level as the current repo. Sub repos are repos located in the folder of the current repo. Peer repos are repos located at the same folder as the current repo. This make synchronizing local repos with online repo hosters like SourceHut and GitHub a lot easier, because before that, each repo had to be pushed manually, or via a script. This was more burdensome compared to pushing a meta to another meta repo, because online repo hosters typically do not allow nested hierachies of repos. Now one can push all SourceHut repos via repo.push.at.all, instead of using many instances of cd [...]; git remote show SourceHut || git remote add SourceHut [...]; git remote set-url SourceHut [...]; git push SourceHut.
    2. Introduction of the project file bin/net.splitcells.osi.repos.hosts. This command echos all hosts of the current repo, its subs and peers. This is used by repo.push.at.all in order to not only push all repos, but to also push these to all hosts (i.e. GitLab, GitHub, SourceHut etc.).
    3. Overall, the changes made it a lot easier to adapt to changes of the repo structure and its hosts. This is particularly the case, when mainstream git hosters are used. It makes it a lot easier, to create completely new commands.
  139. 2022-10-16 (link): #170: Convert DatabaseIRefFactory to database aspect and rename it to DatabaseMetaAspect.
  140. 2022-10-16 (link): #170: Define the concept of a ConnectingConstructor.
  141. 2022-10-16 (link): #170: Define standard configuration for rendering current state of all created tables.
  142. 2022-10-11 Blog Article: Reprioritization
  143. 2022-10-10 (link): #196: Files created during execution are now stored at ~/.local/state/<ProgramName> by default. The format there should abide by the Software Project File System Standards
  144. 2022-10-10 (link): #8: Create interface Identifiable, in order to be able to correctly implement Object#equals in wrappers and aspects.
  145. 2022-10-03 (link): Deprecate shell.execute.as.background.task, because it is not working correctly.
  146. 2022-09-23 Blog Article: We want to use the software, guys. RIGHT?! Right? right? ... ehh
  147. 2022-09-11 (link): #162: Create command system.network.peer.reachable, in order to test if peer is reachable via (local/internet etc.) network.
  148. 2022-09-11 (link): #168:
    1. Rename dependencies.test to test.dependencies, in order to prepare test.* prefix for all test commands.
    2. Also rename user.bin.configure.uses.dependencies.test to user.bin.configure.uses.test.dependencies.
  149. 2022-09-06 (link): #8: Disable history of solutions by default.
  150. 2022-09-04 (link): :
    1. Render DEVELOPMENT.md of each project.
    2. Render BUILD.md of each project.
    3. Render LICENSE.md of each project.
    4. Render NOTICE.md of each project.
  151. 2022-08-27 (link): : The global changelog now widens the definition of events searched in other changelogs. Previously every list starting with just a date, was considered an event description. Now random strings after the date are accepted, as long as these are seperated by a whitespace from the date.
  152. 2022-08-24 (link): #8: Unify Table methods naming:
    • Rename Table#getLines to Table#lines.
    • Rename Table#getDistinctLines to Table#distinctLines.
    • Rename Table#getDistinctLineValues to Table#distinctLineValues.
    • Rename Table#getLines(int) to Table#line(int).
    • Rename Table#getLines(int) to Table#line(int).
  153. 2022-07-29 (link): Deprecate repo.push.to.sh.
  154. 2022-07-24 (link): #8:
    1. Deprecate LinearInitialization and prefer using OnlineLinearInitialization for better performance.
    2. Solution optimization now supports an OptimizationConfig, which simplifies future backward-compatible changes to the Solution interface.
  155. 2022-07-18 Blog Article: Writing tests after the fact.
  156. 2022-07-15 (link): #8: Rename RoutingRating#events to RoutingRating#ratingComponents, in order to communicate meaning a bit better.
  157. 2022-07-06 (link): : #114: Links to XML documents in CommonMark documents are translated to links to corresponding HTML documents (i.e. /net/splitcells/gel/index.xml -> /net/splitcells/gel/index.html) in order to link between different document types.
  158. 2022-07-06 (link): Installed project commands now pass their arguments to the original real command, instead of suppressing these. If one installs the net.splitcells.network as a project repository, arguments to the call of net.splitcells.network.deploy.build.at are now passed to net.splitcells.network/bin/deploy.build.at.
  159. 2022-07-01 (link): #8: Create Query#constraintPath in order to select a constraint path of a solution via the query interface, which is a lot easier to understand, than selecting paths by recursive calls of Constraint#childrenView.
  160. 2022-06-30 (link): #8:
    1. Remove Constraint#parentOf, because its definition does not seem to be useful and this method is not used.
    2. Rename Query#constraint to Query#currentConstraint in order to clarify its meaning.
  161. 2022-06-18 (link): : #168: Create command repo.push.at.all.
  162. 2022-06-03 (link): #8: The history interface for assignments defines now a toAnalysisFods method, that creates an alternative more searchable version of Table#toFods. The new version has dedicated columns for fields of complex attributes. This makes it easier to search for events in the optimization history by i.e. demand or supply attributes.
  163. 2022-06-03 (link): #8: MathUtils#sumsForTarget now supports generating sums with a given exact number of components. If this number is 2 for instance, it only returns sums, that contain 2 numbers.
  164. 2022-05-29 (link): : #s78 Wrong Context Path:
    1. This is primarily caused by not passing the path of a rendered file to the rendering process.
    2. Prevent usage of FileStructureTransformer inside extensions, as this class does not manage the handling of path information of a rendered document directly/explicitly. Instead, provide rendering methods in ProjectRenderer and ProjectsRenderer, which require and handle path information for a given document and pass it to the FileStructureTransformer.
    3. Extensions should pass relative and not absolute paths to the Project(s)Renderers.
  165. 2022-05-29 (link): : #s84 Centralise build instruction documentaton.:
    1. Render CONTRIBUTING.md for each project.
    2. Instead of duplicate build instructions links to the CONTRIBUTING.md document is provided.
  166. 2022-05-28 (link): #87 Fix links inside documents: /net/splitcells/network/status.html now shows, if from a historic perspective the number of invalid links is zero or at least improves. It checks the repo net.splitcells.network.log, if according to the file src/main/csv/net/splitcells/website/server/project/validator/RenderingValidatorForHtmlLinks/<build name>/<builder server>.csv, the number of invalid links of the last build is as small as the lowest number of invalid links in the complete build history.
  167. 2022-05-28 (link): : #168: repo.status now executes ./bin/net.splitcells.osi.repos.peers in order to find additional sub repos, that are located in the same repo as the current is. This is a way to support repo nesting with a flat folder structure.
  168. 2022-05-23 (link): : #82: XML-Rendering can now handle the header <?xml version="1.0" encoding="UTF-8"?> of the input document without triggering an error. This is patch is implemented hackily.
  169. 2022-05-23 (link): #170: SolutionBuilder now requires to always define the demand and solution set explicitly. The helper methods withNoDemands and withNoSupplies are created for that, in order to state intent. Also, setting the supply or demand set multiple times during solution building is not allowed anymore, in order to simplify the building workflow.
  170. 2022-05-06 Project Proposal: Create update command for FUWPD
  171. 2022-05-06 (link):
    1. repo.process now shows the repo path, where the error occur.
    2. Fixed quoting issues of echo's arguments in command.repositories.install.
  172. 2022-05-02 (link): : #142 Make it easy to support arbitrary input formats and output styling.
  173. 2022-05-01 Blog Article: Note On Creating Your Own Web Layout And Style
  174. 2022-04-29 (link): : #91: Links to sub projects READMEs in CommonMark files are now translated correctly.
  175. 2022-04-25 (link): : #162: On the default layout, there is now status button on the website in the top left corner. It currently shows, if all available computers executed the build system in last 7 days. If this is the case it states INFO, which is based on the log levels. If this is not the case it states WARNING. The button leads to https://splitcells.net/net/splitcells/network/status.html which lists all successful and failed executions. Keep in mind, that on the version hosted at https://splitcells.net/, the status only refers to the status during the build time of the website, as it is static.
  176. 2022-04-19 (link): #170: Create method complexAdditions for RatingEvent in order to prepare assigning multiple groups to one line.
  177. 2022-04-18 (link): #162: There is now a default Comparator named naturalComparator provided for comparable objects in Dem.
  178. 2022-04-17 (link): :
    • #142 Deploy first draft of minimal styled version to splitcells.net.
    • #57 Render Javadoc of projects at <projectFolder>/javadoc/*, if a Javadoc build is located at target/site/apidocs.
  179. 2022-04-17 (link): repo.synchronize.with executes repo.is.clean after repo.repair, in order to avoid errors caused by missing sub repos.
  180. 2022-04-10 (link): : Support rendering website to filesystem with a custom root path. This way multiple versions of a website can be deployed to a single filesystem. Compare https://splitcells.net/net/splitcells/martins/avots/website/index.html and https://splitcells.net/net/splitcells/website/minimal/net/splitcells/martins/avots/website/index.html. Previously, this was supported in theory, but there was a bug making it impossible.
  181. 2022-04-04 (link): Remove no args method Query.then, as it does not seem to make sense.
  182. 2022-04-03 (link): #10: Rename Resource interface to ResourceOption and it's ResourceI implementation to ResourceOptionI in order to clarify its meaning. This also makes it possible to use the name Resource for an interface of resource like things.
  183. 2022-03-31 (link): #8: Rename optimizer components, so it will be easy to distinguish the offline repair from the planned online repair:
    1. Rename ConstraintGroupBasedRepair to ConstraintGroupBasedOfflineRepair.
    2. Rename SupplySelector to SupplyOfflineSelector.
    3. Rename SupplySelectors to SupplyOfflineSelectors.
  184. 2022-03-29 (link): : Create renderer extension for JavaScript files. Thereby, *.js files can be requested and the text/javascript MIME type will be used. These JavaScript can be stored under src/main/js/** for each project.
  185. 2022-03-27 (link): Create ssh.upload.file.py in order to more easily upload files to new remote servers.
  186. 2022-03-20 (link): : #125 Create global news feeds: It is located at /net/splitcells/CHANGELOG.global.html.
  187. 2022-03-20 (link): : #162 Create network worker project (projects/net.splitcells.network.worker).
  188. 2022-03-12 (link): echo.error now also sends the message to notify.error, if $echo_error_notifies_user is set to true. Thereby, it is more easily to know, if some optional feature was not executed during a long command. For instance, when a command synchronizes a repo with multiple other computers, a notification for each not available computer is helpful. In this case it can be normal, that some computers were not available during each synchronization, and therefore the execution as a whole does not have to be aborted or marked as a failure.
  189. 2022-03-07 (link): :
    1. Move net.splitcells.website.server.project.ProjectsRenderer to net.splitcells.website.server.projects.ProjectsRendererI in order to have a dedicated package for combining the rendering of multiple projects.
    2. Create interface ProjectsRenderer used by ProjectsRendererI. This way alternative web server implementations are possible.
  190. 2022-02-25 (link): #158 Do not change the PATH during the installation of OS state interface: command.repositories.install.sh now does not call command.managed.environment.configure.sh and therefore does not edit ~/.bashrc. This avoids unexpected changes to the user configs. The command command.repositories.setup.sh was created, which is the original version of command.repositories.install.sh. This way there is still a command, that installs the OSSI project with full functionality.
  191. 2022-02-15 Blog Article: Generic Allocator's Fourth Version
  192. 2021-11-27 Blog Article: Supporting Arbitrary Website Renderers
  193. 2021-10-04 Blog Article: "There is the bad, there is the horrible, and then there is [sight] error handling."
  194. 2021-10-04 Blog Article: "Development Timing And Discovery Based Networks Of Perspectives"
  195. 2021-08-10 Blog Article: "Developing Software at Gunpoint: Weak Copy Left Versus Pseudo Permissive"
  196. 2021-07-20 Blog Article: Pulling The Rip Line
  197. 2021-07-07 Blog Article: On Creating The First Public Release
  198. 2021-03-08 Project Proposal: Create minimal Java grammar for this project in order to make code less complex