2,733,660 events, 1,358,412 push events, 2,154,177 commit messages, 154,990,919 characters
FIXED THE FUCKING WORK GRID GOD FUCKING DAMNIT I HATE THIS SOMETIMES
v2.5 pre-release - testing
New: A framework has been added to allow players to create their own custom class - more information can be found in the Defs\CustomDefs\TM_CustomClassDefs.xml file in the mod's folder New mod options added to adjust the frequency classes are generated by different faction types
To demonstrate the capabilities of the custom classes... Hybrid Class - the Shadow: half-breed demons with an affinity for shadow magic and a talent for combat that makes them perfect assassins. o Soul Bond: demon blood grants the shadow the ability to bond with the soul of another pawn o Blink: the affinity for shadow and darkness allows the shadow to easily understand the inner workings of instant movement, in many forms o Summon: another perk of their hybrid nature, the shadow can instantly summon other objects or pawns to their location o Shadow Walk: shadow walk instantly moves the caster into the shadow of another pawn anywhere on the map o Shadow Strike: the shadow launches an all-out attack on a single target, delivering a devastating opener and gaining haste for 5 seconds; the shadow returns to their anchor after 5 seconds o Nightshade: coats weapons or ammunition in a deadly toxin; applies each time an attack deals damage to a target o Veil of Shadows: creates a smoke cloud that cloaks the caster in shadows, turning them all but invisible
Tweaks: Damage calculations have been streamlined and cached to improve performance for actions and tooltip updates Removed quest related events from prediction Reverse Time (when used to reverse death): - No longer applies resurrection sickness to the chronomancer, but a unique time reversal hediff instead - previously dead pawns have a chance to acquire health defects and will lose a small amount of skills - the chronomancer also has a chance to suffer health defects and skill loss
Bug fixes: Boundless trait correctly applies ability cooldown Fixed a bug where transmute could attempt to split a stack of 0 Transmuted material will always result in at least 1 count of a new material Strong Back increases inventory capacity as well as carry capacity
Docker for Mac sucks :(
I developed this on a Mac. Volume mount performance with Docker for Mac is abysmal and cuts my battery life in half easily. This is a known issue between MacOS and the built-in lightweight hypervisor that comes with this software. I would also experience constant CPU utilization while Docker was running.
I decided to go old-school and switch over to Docker Toolbox. This uses Virtualbox as its hypervisor. These problems seemed to have gone away. However, the side effect of this is not using volume mounts anymore and building my Docker image before unit and integration tests.
This change wasn't as slow as I thought it would be since the only change here is copying over the app directory.
variable changes and a shitstorm of stupid ass buttons
shut up you bitch
shut the fuck up you annoying bitch
Update JavaThemis Secure Cell API (#634)
- New API of Secure Cell
Introduce new, interface-based API of Secure Cell. Current API has a number of issues described in RFC 3.9, notably the run-time mode setting and not-quite-secure support of String inputs which interferes with passphrase API. That's why we introduce a new interface which should rectify these issues.
The users will deal with interfaces of the base SecureCell class: SecureCell.Seal, TokenProtect, ContextImprint. They will take into account differences in inputs and outputs of these modes. They also allow to introduce passphrase API which actually has the same API after the initialization.
Using interfaces as opposed to classes allows us to hide unnecessary implementation details and do not expose the users to a number of classes that they don't actually need to interact with.
This is also a nice point to start paying more attention to JavaDocs, with better descriptions of APIs and versioning.
- Implement new Secure Cell API
Add implementation of SecureCell interfaces. These are package-private classes constructed by static factory methods of the base class. They provide improved API with the similar behavior.
The differences include naming and the fact that encryption code path no longer uses checked SecureCellException, instead wrapping it into unchecked RuntimeException. This is because encryption code path is unlikely to fail due to business errors as opposed to programming errors, so there is no need to enforce immediate error checking with checked exception. This is not true for decryption path.
Note that native methods do not throw exceptions on their own right now. Instead they indicate errors by returning "null". This would be nice to get right later.
- Nullability annotations
Mark new interface methods with @NotNull and @Nullable annotations where appropriate. This improves IDE experience and Kotlin integration.
Contracts enable even more warnings in IDE. For example, all Secure Cell methods are pure (i.e., do not change the state of the cell itself). This allows IDE to warn about unused results of Secure Cell calls.
Since we do not support Java 6 & 7, we can go with annotation library that requires Java 8+. Jetbrains have a compatbility version which supports earlier JVMs.
- Test for new Secure Cell API
Port Swift test suite to Java to check the new API. There are also tests for compatibility between the new and old API.
These tests have uncovered a couple of warts in Themis Core implementation. We'll deal with them later.
- Target Java 7 since that's what Android uses
We require Java 8 for building with embedded Gradle wrapper, however Android still targets Java 7 by default at the moment. It is possible to build for Java 8, but that changes the requirements to JVM. We'd like to avoid cutting support unless we don't really need it.
Make it explicit that we're building for Java 7 for Android, and build desktop Java code for Java 7 too. We use Java 7 features in the code so we cannot build with Java 6. That train is now gone.
Also, change the annotation library to use the compatibility version which supports Java 7.
- Use JUnit 3.x pattern to test for exceptions
Unfortunately, we cannot use "assertThrows" which is so convenient. First of all, we can't use lambdas from Java 8. However, even if we use Runnable instead, JUnit wrapper on Android uses older JUnit which does not have "assertThrows" support in any form.
Thus we fall back to ridiculously ugly, but working approach recommended by JUnit authors 1.
Maybe when we bump the requirements to Java 8+ we could use better testing library API. But not today.
- Ignore tests that crash Android runners
These new tests are a pinata of crashes. They have discovered a serious bug in JNI code which crashes the process on Android if a corrupted Secure Cell is decrypted.
Disable these tests for now so that we can proceed with other updates. They will be reenabled later, once the bug is fixed.
- Polyfill base64 decoding
It turns out that not all Android API levels support java.util.Base64 which appeared in Java 8. Since we build for Java 1.7, it's kinda wise to not rely on that API. Android has its own API for decoding base64, but we cannot use that for desktop Java.
So choose neither and provide a polyfill with is API-compatible with java.util.Base64, implemented using an obscure Java API for processing XML which include base64 support as well.
- Use Apache Commons for polyfill after all
Unfortunately, DatatypeConverter is not available on Android too, so we have to use an external library.
- Use older version of Common Codec library
Unfortunately, we cannot use the latest version of the codec library because some Android systems (e.g., API 24) already include an older version of some of the Commons' classes. They are loaded before our dependencies fetched by Gradle and break the party.
Investigation of Android source code shows that they're using what appears to be version 1.2 of the library (the current version is 1.14). Okay, so that limits us to the API provided by 1.2. Fine sigh
Update README.md
I haven't used the app yet, so I definitely haven't found any bugs. I'm a horrible (but learning) programmer, so I can't really contribute code. I only speak English and I doubt my Google Translate translations are what you're looking for. I'm also broke, so I couldn't be a Patreon. But... I can update links and information! I'm always happy to make the only kinda PRs I'm qualified to make... link updates 😃. Hopefully you are still around to merge this... or maybe nobody cares like you think, but I found this on F-Droid and cared enough to update this anyways.
On F-Droid, the listing for Shelter says: "PLEASE READ README.md BEFORE YOU START USING THIS APP!"
With the README.md above being a hyperlink to your old self hosted git instance... I'm not sure how to update that link as it appears to only be on F-Droid (not here on Github.) Maybe it came from your old git server... or maybe you can edit that on F-Droid (I don't know) but I wanted to update that for F-Droid users... oh well. At least the F-Droid "source code" link brings people here to Github. Not that I want people centralizing around more Microsoft monopolies 🤔. Well it is what it is... at least they're paying for the hosting!
Monday 2020-05-11 11:54:48 by Justin Earle [email protected]
Create AUTHORS README.md
Friends are the Family we choose to keep around Sorry to all the Friend went a bit too far you know who you are I AM. Security.md #1 919463194108 Custom symantec headers with PGP4win.share.basekey.io Amazingly_Amazon_Around#summersumarian.slackbot
License: Change pretty name of WTFPL
should be short version WTFPL instead of long version (Do What the Fuck You Want To Public License)
great joy tonight in BLB meeting... thank you brothers
updating test main, fixed crash bzero, fuck you strdup
sorry, updated token
kinda fucked up there; here's code with updated token
dropping cs
Fuck computer science, all my homies hate computer science
daemon & daemonize overhaul
This commit continues the complete replacement of the spaghetti code mess that was inside daemon/ and daemonize/ which started in #1138, and looked like a entry level Java programmer threw up inside the code base. This greatly simplifies it, removing a whole pile of useless abstraction layers that don't actually abstract anything, and results in considerably simpler code. (Many of the changes here were also carried out in #1138; this commit updates them with the merged result which amends some things from that PR and goes further in some places).
In detail:
-
the
--detach
(and related--pidfile
) options are gone. (--detach is still handled, but now just prints a fatal error). Detaching a process is an archaic unix mechanism that has no place on a modern system. If you really want to do it anyway,nohup lokid &
will do the job. (The Windows service control code, which is probably seldom used, is kept because it seems potentially useful for Windows users). -
Many of the
t_whatever
classes in daemon/* are just deleted (mostly done in #1138); each one was a bunch of junk code that wraps 3-4 lines but forces an extra layer (not even a generic abstraction, just a useless wrapper) for no good reason and made the daemon code painfully hard to understand and work with. -
All of the remaining
t_whatever
classes in daemon/* are either renamed towhatever
(because prefixing every class witht_
is moronic). -
Some stupid related code (e.g. epee's command handler returning an unsuitable "usage" string that has to be string modified into what we want) was replaced with more generic, useful code.
-
Replaced boost mutexes/cvs with std ones in epee command handler, and deleted some commented out code.
-
The
--public-node
option handling was terrible: it was being handled in main, but main doesn't know anything about options, so then it forced it through the spaghetti objects beside the pack of all options that got passed along. Moved it to a more sane location (core_rpc_server) and parse it out with some sanity. -
Changed a bunch of std::bind's to lambdas because, at least for small lambdas (i.e. with only one-or-two pointers for captures) they will generally be more efficient as the values can be stored in std::function's without any memory allocations.
Update
- Added Black Stag Helm: dropped by Silver Knight Ledo.
- Added Golem Set: sold by Domhnall of Zena.
- Respawning Yhorm will no longer disable the Church of Sin bonfire.
Well .. we need a HandleSeqMap ...
Its ugly as sin, and the only user of it is ugly too... but we are hacking today...