## Showing reports for hugo

### Day 0

No report.

### Day 1

Summary: Review database structure

Dedicated Time (in hours): 11

### Day 2

Summary: Finish database review, open rfc, update script and autogenerated code

Dedicated Time (in hours): 11

    Relevant commits:

     - 20b0c4a3a6b38b3631fdd00fd967ff973dde0e77 [DB][REFACTOR] Restructure the database
     - 06efbb28abed57cb37c870e097bcdc7914d1a164 [TOOLS] Update bin/generate_entity_fields script
     - ebf8e2ec0e2da494358d59d16d066e7e812487e8 [AUTOGENERATED] Update autogenerated code
     - 5b5e66898b47bdb0fe8dbd6d3814fb6f1c5904e0 [MODULE] Move 'foreign' entities from core to a module

### Day 3

Summary: Helping Eliseu and investing a potential Doctrine bug

Dedicated Time (in hours): 1.5

### Day 4

Summary: Investigate Doctrine bug, fix database restructure commit, changed zero dates to CURRENT_TIMESTAMP, fixed Elise's rebase and last commit; researching how to implement queueing (symfony messenger) and investivating avatar 404 bug

Dedicated Time (in hours): 7

    Relevant commits:
      - a17072af6291d8f56b7f37901caf39d3b048033e [DB][REFACTOR] Restructure the database
      - a56d64678b22158cd04ecf35200a975838f1a7a5 [DB] Replace zero dates with CURRENT_TIMESTAMP and add defaults to all 'created' or 'modified'
      - 38a615aeac33ca1496da391aa23911bd64dc5a07 (v3)

### Day 5

Summary: Design discussion with Diogo, updating dependencies, adding wikimedia/composer-merge-plugin as a dep., fix deprecated use of class, fix routes, add controller base class, dummy notices

Dedicated Time (in hours): 7.5

    Relevant commits:
      - 4224346dbc6aade65673b4db92bc1ee07d7dff2d [COMMAND][DEPRECATION][FIX] Fix app:events's deprecation
      - b6426445b77c7e3d46d9a9169145346015e73a3b [ROUTE] Fix routes, config_admin got deleted
      - 49b10bed87e2f790cffa92e271c92e57dceed363 [CONTROLLER] Add Controller base class, which handles rendering templates if requested HTML or json, accordingly
      - 7b53a32d705b554099f44b0566076c11eda4f706 [FIX] Make ModulesManager check if file exists
      - a227bec59d07a867194a70d485bd179cb7f50508 [CONTROLLER] Show dummy notices in main/all

### Day 6

No report.

Total hours this week: 38

### Day 7

No report.

### Day 8

Summary: Implement and test queue wrapper. Investigating http caching. Configure HTTP cache, add cache wrapper, refactor log wrapper

Dedicated Time (in hours): 6

    Relevant commits:
      - a2024f83eb1416c7210dc59e0224839cca5253e9 [DB] Delete queue_item table, as queueing will be handled by messenger
      - 50c27b500ffd975e8e0b5d59c792beaa729c5d93 [DEPENDENCY] Add symfony/messenger as a dependency
      - 4a249209b086e091b567a181a6c5ba8ddac68354 [QUEUE] Add queueing wrapper, default configuration and example usage
      - 92467685b303486bc0f9b315c2f0edcbc1d9d832 [REFACTOR] Refactor log wrapper
      - 7b687a666b71a82d9592d8b27ecb81398c133416 [DEPENDENCY] Add symfony/cache as a dependency
      - 2f371019f7253da186de7c7f4e4a7aced92decf6 [CACHE] Add a static wrapper around symfony/cache
      - 311258139faa63b12d2a6e99a90790f1b4b17d75 [CACHE][HTTP] Configure simple HTTP cache

### Day 9

Summary: Miscellaneous fixes, add ds extension and ring buffer data structure

Dedicated Time (in hours): 6

    Relevant commits:
      - bcd4780623afe1a1ba032d38653b95c480b9cb01 [FORMATTING][DEFAULTS] Fix formatting and remove redundant config defaults
      - 272463678ed5e76d5d3b8fb01ca7d41e52b462b7 [FIX] Fix cache wrapper
      - e73965b12f85c60f4920474530fd0f04c9f09b09 [FIX] Fix configure script to use quotation marks properly
      - 177899147d0fb0ead7fab4556decbc1b4d04f775 [DOCKER][PHP][EXTENSION] Add PHP ds extension to docker PHP image
      - 3eb7c318d585572e40c945831d0216cdee11ce15 [PHP][EXTENSION][POLYFILL] Add php-ds polyfill, which is used if the native extension is not available
      - e87cc1fbd48bdf508ed9c72ba6548363564ab25e [DEFAULTS][FIX] Fix defaults to use value from environment
      - c4c0e857302999df22f55b590f760514883b92f1 [DOCKER] Move certbot files to hidden folder, so it's ignored by GNU global
      - 4f917b921ab9319928340222c9f9300d1a0635c3 [DATASTRUCTURE] Add Ring Buffer datastructure
      - 6cfd022e2734376708ada3fa50edbaa38108f73a [CACHE] Extend the static wrapper to support working with lists in caches that don't natively support them

### Day 10

Summary: Add msgpack and redis extensions to docker image, add support for multiple cache pools

Dedicated Time (in hours): 7

    Relevant commits:
      - 5c7ef011aab8f4086bf57e26f0efbc350368230a [DEFAULTS] Add modified time to config table (as value) and only reload the defaults if the file is newer
      - 4bd1a64c50a5e8285fb25eb6babfe2a2de701e6c [DOCKER] Add msgpack and redis extensions to docker image
      - cb429885e0c028219e460f213bd9ea022c09f1ae [CACHE] Add support for multiple pools with the syntax (as an example) SOCIAL_CACHE_ADAPTER='default=redis://localhost:6379,memcached://localhost:11211;db.config=apcu://'

### Day 11

No report.

### Day 12

No report.

### Day 13

Summary: Discussion with Diogo regarding next steps on the software's architecture design

Dedicated Time (in hours): 5

Total hours this week: 24

### Day 14

Summary: Discussion with Diogo about ways to handle UI events. Added special support for redis to the cache. Fixes and refactoring

Dedicated Time (in hours): 4

    Relevant commits:
      - ca560fc8191c82227ac7d46e65ca032636ca74a7 [DOCKER] Updated php image so redis is compiled with LZ4 compression available, as it's the fastest at decompressing and really fast at compressing. Read performance is more important, with this being used as a cache
      - 14c6a7c42b67730d511c6b567200eaa7b70d9a37 [DATASTRUCTURE] Refactor and implement array indexing methods
      - 38dc05edd24f17f6641c2f4697f433319fb0de60 [CACHE][REDIS][FIX] Add special support for redis (fixed size lists), set method and general fixes

### Day 15

Summary: Review enhanncement tagged issues with Diogo and decide what to implement in v3

Dedicated Time (in hours): 3.5

### Day 16

Summary: Fixing redis extension use lz4 build failure, adding a redis polyfill placeholder, to allow autoloading the necessary classes if the extension isn't installed. Discussion with Diogo and Eliseu about the features for v3. Fix use of redis

Dedicated Time (in hours): 5

### Day 17

Summary: Trying to understand how to implement doctrine caching, fixing symfony translator PR, so it's hopefully accepted, update DB wrapper so entity names are provided without the namespace

Dedicated Time (in hours): 3

    Relevant commits:
      - 6e405270d6e56f6a264d182e9321a861c8ad5f10 [DATABASE][WRAPPER] Update DB wrapper so entity names are provided without the namespace
      - https://github.com/someonewithpc/symfony/commit/e7e8a95d423947545313cbdd915fcfd214be7412 Add support for calling 'trans' with ICU formatted messages

### Day 18

Summary: Design meeting with Diogo

Dedicated Time (in hours): 3

### Day 19

Summary: Studying how to implement login with Symfony, and social's v2 implementation, reading about best practices about password storage

Dedicated Time (in hours): 3

### Day 20

Summary: Start implementing user login and supporting systems

Dedicated Time (in hours): 8

    Relevant commits:
      - a9629d1d064cd37709e95a906318ae99394decad [DB] Re-import the local_group table, as it'll be used as per the new group semantics
      - 992d2e598bc70ff68a69617fcbe9b0d82fa66702 [DB][WRAPPER] Add findBy method which allows finding entities with a complex expression
      - e27042af3ee3b7d68d28aa004e47262a657ccc5e [DEFAULTS] Update default reserved usernames
      - 88c9f03e0827e8f16fd56e9c3f9f0c1ff0ecb9dd [UTIL][NICKNAME] Import nickname utilities and exceptions from v2
      - 4cb4af4791781ccb80461968f6a8a1afa91cc315 [REFACTOR] Change methods in the Common class to camelCase, add isSystemPath (previously in Nickname.php)

Total hours this week: 29.5

### Day 21

Summary: A lot of fixing and refactoring, rename user table, add login and logout functionality, implement password hashing

Dedicated Time (in hours): 8

    Relevant commits:
      - 4cf9e52eda73717cc5e1433b56b6987c6d8a3b32 [CACHE] Tiny fix
      - 14471bd49c18f5ab6eb4662147fe2f32812d5096 [DB] Re-import the local_group table, as it'll be used as per the new group semantics
      - f612e7653ddf90cfc5064e711c51bb2349880bd4 [DB][WRAPPER] Add findBy method which allows finding entities with a complex expression
      - 8fbaa1019b4d13acac584d311be016039a89165e [DEFAULTS] Update default reserved usernames
      - 643c4f37c05547181856c3da946c490825939370 [UTIL][NICKNAME] Import nickname utilities and exceptions from v2
      - e09fbf32dac403f6e8a388857dcb808ba1f77130 [REFACTOR] Change methods in the Common class to camelCase, add isSystemPath (previously in Nickname.php)
      - 03d521f460aa0323d2c11d48ba84cfc2595982c9 [I18n] Remove I18nHelper
      - cfadcfb171bde7288e8d4dbdcab213a2d1b4a04f [CONFIG] Change way configuration is done to use Symfony's system instead of environment vars
      - 21847e9a8d8e64b2f74e84a949db1f4cc0aa72ea [DEPENDENCY] Add symfony/config as a dependency
      - c314ac2a2b7944161df6896a33aaa9aba6625c52 [DB] Rename user table to local_user, since doctrine shits itself otherwise ._.
      - 78988a8a4e3a124db98a1b5f909769e20f2406e3 [AUTOGENERATED] Update autogenerated code
      - 82665ec7869fefd238fa765284196d5d55af4316 [TOOLS] Update shebang on scripts to use the correct php executable
      - 147149cf69a92e24b926173afa60ca908e3b82f3 [I18N] Remove support for context until it proves necessary, as it broke the code
      - 34b45a54bcea26af1f4a0e359948300a558d3918 [REFACTOR] Refactor GNUsocial.php so it initializes itself as a service
      - f36d0963a500eca97efb9ce6eb91a28debb76b7a [UTILS] Make Common::config return the unserialized value instead of the entity
      - b62058a23f2292d89e4d400ba5c73017da66f418 [UTILS] Remove Functional::arity as it got merged upstream as Functional\ary
      - 3bfbf4a5ff73c1ee6df5262c303e2771ab9c40b4 [UI][SESSION] Add login and logout pages
      - Break
      - da63805a2761df8a4fd7acf8e0d50411c8da8930 [DEFAULTS][FIX] Fix logic error that kept reloading the table when the file wasn't modified
      - 3b818ce3c40f91c61d4b03f1bc30cf1132a262cd [UTIL] Update Common::config to ensure the values queried exist
      - e60b668294d99188875a386d56a3eb206e0d8995 [DB] Add role collumn to profile table
      - 8aaa6768eccde9c4a430a403b0c39268c81e8c94 [USER] Add UserRoles
      - 13e7830b7df027d49fbfd2d9bab35cefe420d2ae [LOGIN] Implement password checking and related systems
      - d9f95d91df06dcd199cca2725b30bc51b24807f1 [DEFAULTS] Add password hashing algorithm default settings
      - 5084f94ff7d6dfffa52a27784499693cdf822c32 [CONTROLLER] Remove example enqueue

### Day 22

Summary: Rebasing with Eliseu, helping him setup afterwards, design meeting with Eliseu and Diogo. Implement backbone for notification and refactor controllers. Add twig 'active' function, Common::getUser

Dedicated Time (in hours): 9.5

    Related commits:
      - 131415965493d5bce804a561c18dc8254786d9c9 [NOTIFICATION][DB] Update user notification prefs table, implementation of Notification and define a base class for notification transport
      - 8d4a8665cfbcfef450a6b2e22de064d74f45d7ee [CONTROLLER][REFACTOR] Refactor controllers to use the new base class and remove controller from the class name
      - 94d82783aab6f39aa48dcecd47270d85c0dd11e4 [CONTROLLER][REFACTOR] Refactor the base Controller to not reinvent the wheel too much and rely on Symfony's events
      - 9a51870bca4df6ed549f800a673fcdf81ccf9194 [TWIG] Add twig function to output the active tag if the current route matches a given one
      - 15b39f0be77e9fe07dc43883f470052a593a4051 [REFACTOR] Small refactor on entrypoint and RouteLoader
      - d95a7861872f1a291a7d537d7ff12bba4be3034f [COMMON][SECURITY][WRAPPER] Added security service static wrapper and Common::getUser

### Day 23

No report.

### Day 24

Summary: Implement registration and bug fixes; fix controllers, refactors and stuff

Dedicated Time (in hours): 10

    Relevant commits:
      - 28845792db [DEPENDENCY] Add symfonycasts/verify-email-bundle
      - 5af8881b6b [TOOLS] Update generate fields script to output default values
      - ffe5bb0b7c [FIX] Fix bug in DB.php, since findBy can return different types
      - eec74314cc [MAILER][WRAPPER] Add mailer wrapper that respects the configuration
      - 8b66b1175b [DB] Update LocalUser table to not have a numerical id, add is_email_verified and fix getProfile accordingly
      - 3387d4defe [FORM][WRAPPER] Merge argument options, not replace
      - ab3c8829a7 [DB] Fix typo in profile table and add a constructor
      - f51cdbf842 [DB] Fix typos in user_notification_prefs
      - 9fd9624ec7 [UTIL][NICKNAME] Small refactor and remove the check between user nickname and group_alias, as these will have different semantics
      - ecd62cb810 [USER][UI][AUTHENTICATION] Add registration form
      - f053409876 [REFACTOR] Small refactor in Authenticator.php, to remove unused services
      - d720e19525 [AUTOGENERATED] Update all entity fields
      - 3dea3877fd [I18N] Remove incomplete autogenerated translation file, to be fixed later
      - be9d1ead5c [UTILS] Update Common::setConfig to throw an exception if appropriate, add Formatting::{toString,toArray}
      - 9bc9be9e2e [CONTROLLER][ADMIN][CONFIG] Fix form to use static strings as keys and add labels seperately; convert input from string to appropriate type
      - 81725b4dc0 [FIX][CONTROLLER] Remove unreachable code from the Security controller
      - d89d66b0fa [SECURITY] Update way passwords are checked and update
      - bf3578dc26 [UTIL] Update Formatting::{toString,toArray} to allow spliting by either space or comma
      - 6d8b49bea6 [DB][REFACTOR] Refactor DB.php and make findBy always return an array, instead of a doctrine collection
      - 7066b2a18b [FORM] Add Form::isRequired
      - f4602192a4 [SELFTAGS] Add Profile::{set,get}SelfTags
      - a4869e3586 [UI][USERPANEL] Add prefilled fields, mark some as optional and handle self tags in the profile settings page

### Day 25

Summary: Add phone number to user table, update user panel controller

Dedicated Time (in hours): 3

    Relevant commits:
      - d0eaf8d42b [UTIL][NICKNAME][FIX] Add self to constant
      - 057fbb19bd [DEPENDENCY] Add odolbeau/phone-number-bundle
      - 3f52592af2 [REFACTOR][REGISTER] Save previous url to redirect back after registering
      - 63b65b0620 [UI][ROUTER] s%settings/profile%settings/personal_info%
      - 58ff9aeceb [UI] Update settings/account to reflect the current values
      - 70b5210f87 [DB][REFACTOR] Update local_user, SchemaDefDriver and bin/generate_entity_fields to use the phone_number type (which maps to a varchar 35 and does validation)
      - 3c6bcef037 [Controller] Update settings/avatar

### Day 26

Summary: Add Form::handle which automagically creates a form, handles a request, and writes the data to the given entity; Help Eliseu with avatar cropper, submit bug report to phone-number-bundle

Dedicated Time (in hours): 6.5

    Relevant commits:
      - b480b664016908d1486bdc58c94bd7c4674572c3 [SECURITY][FIX] Save previous url on /register and /logout
      - ed3f413521dd4a1d4be2ab1cf02a0be0202653a9 [DB][TOOLS] Update local_user to return the proper PhoneNumber type
      - 5dcb998b68eb04c01840246e86ca3a7e6c31767b [FORM] Add Form::handle which automagically creates a form, handles a request, and writes the data to the given entity and update Form::create to do some more magic as well
      - b6e96d5df40ce858c0caad7157f3d7a78efd43ab [FORM] Add DataTransformer to and from array
      - cbc457014d9225df0ba51bdfe37b5e3cc16b353b [FORMATTING] Add option to split a string to array by both a comma and a space
      - 3d2fab76104444f759b4c781d86e5eab5da16bc3 [DB] Remove DB::flush from Profile::setSelfTags
      - d989995ec8a1e2d7eb5b16a369df4881f6bc3f09 [CONTROLLER][REFACTOR][UI] Refactor UserPanel to use the new Form::handle method and add placeholders in the password fields

### Day 27

Summary: Start implementing tabbednotification settings panel

Dedicated Time (in hours): 2

Total hours this week: 39

### Day 28

Summary: Attempting to update the ExtensionManager, but can't dynamically load classes, asked on symfony slack, awaiying an answer

Dedicated Time (in hours): 1.5

### Day 29

No report.

### Day 30

No report.

### Day 31

No report.