 However I am very open for ideas and a discussion about this, maybe it will change my mind.

I agree with @MoOx, I think the current tagline isn't very optimal. We need to sell the benefit of using PostCSS, not how the benefit is achieved!

Feel free to add more taglines other Open Source Project got, can get us thinking :thought_balloon:
Sass tagline "CSS with superpowers"
Stylus tagline "Expressive, Dynamic, Robus CSS"

If we were to change the tagline I think we should adress PostCSS of being "universal" - Anything can be added - there is no limit or anything that can't be done.

"Choose your CSS flavor"
"Choose your CSS superpowers" (and that's a nice reference, Sass should be flattered).
"Make your own CSS flavor".

We discussed before, that we should focused on content. Does this tagline is a userful for our users content?
I think we should create a text only if it will be design purpose.

Good design make no sense with no real content. All good designers will tell you that.
I think it's really important to design the website by thinking to this things first.
A tagline is super important imo.

@MoOx why you think tagline is important? Let’s define tagline task and we will find the best one.

Yeah but the tagline should really stick with the brand as well. We should not only think in terms of design.
:joy:

"Choose your CSS superpowers" (and that's a nice reference, Sass should be flattered).

Yeah but the tagline should really stick with the brand as well

@marcustisater let’s focused on real task. What you want from tagline?
Without it we will create a “because every compnay need it” text without any benefits for us.

For example, some companies think that tagline should show a emotional content of brand. The non-ration idea and spirit. If we agree with it, we should find this idea and then make it into a text.
Other companies think that tagline is a short description of idea. In this case we should make something like that main description in package.json.

Great point, I think we should focus on a tagline that is short and simple that's why I've personally liked "Transform you're CSS with JS Plugins" so much.

Some thoughts that came to mind:
I'd be curious what the target audience is. Is this speaking to PostCSS plugin developers or CSS developers looking for PostCSS Plugins? I glanced at #26 and this sort of relates to this issue as well.
Some ideas:
To the PostCSS Plugin Developers:

"A tool for transforming styles with JS plugins." (from package.json)
"Enhancing CSS with the power of JavaScript."
"A pluggable platform to transform CSS with JavaScript."

To the CSS Plugin Developers:

"Empowering the css developer."
"Empowering the css developer with a pluggable compilation tool."
"Your CSS with the power of JavaScript."
"Your CSS, Enhanced."
"The ultimate, and pluggable toolkit for the CSS developer"
"CSS empowered JavaScript."

To both in one:

"A toolkit for enhancing and optimizing CSS with the power of pluggable JavaScript."
"A toolkit for CSS using the power of JavaScript."
"The ultimate pluggable toolkit for CSS with JavaScript."
"CSS enhanced with JavaScript by the ultimate pluggable toolkit."
"Enhancing CSS with a pluggable JavaScript toolkit."
"JavaScript turbocharging the vanilla CSS."

Good thoughts @peterramsing. I'll suggest we come up with a few more taglines then make a poll if we can't come to an agreement together.
My favourite one so far:

Your CSS, Enhanced

@marcustisater let’s think rational first and use polls only if we will have few results with same rational results.

I prefer taglines like “Your CSS with the power of JavaScript” rather than like “Your CSS, Enhanced”. Because second one do not contains any explanation. Every tool can tell it about itself. As result, users will not belive in this text.

That makes sense and I agree with you but does it attract users to PostCSS? People are using Sass now a days even though is made in Ruby and C++(LibSass).
I am thinking of how to adopt new new-users to PostCSS - they might be thinking "Oh, sounds difficult", "Javascript with CSS, no thank you". Does the tagline "Your CSS with the power of JavaScript" really attracts users to start looking into PostCSS more? I don't know. This is sure a difficult one because both sides has negatives/positives sides.

as @peterramsing mentioned, maybe something in between. Both in one

@marcustisater if you want to attract users, let’s make it as a main purpose for the tagline.
I think that it is immpossible to do something, if you didn’t understand why you need it.
This is why I afraid that we start this issue as cargo cult: we saw that big brands has tagline, so we try to find our. But it is a bad way. We should use rational way: understand what we need and how we can solve it.

Yeap, I think too that we should create tagline for both type of users. Especially because many companies write custom plugins.

My tagline version: “Basement to do anything with CSS”. It is a best explanation, but not from user perspective, so it is just a suggestion.

I understand you completely, the best way is to aim at both of the target audience imo. @stephenway wrote some very good questions at #26

This is a very difficult one and it's high prioritized issue to get moving, try promote this @ai if possible

This task is not high important for me, because I think we should always see a real usage of any design item.
So it is too hard to create a tagline without a place, when it will be used.
So, when you plan to use it?

Sure, that's fair. I was just thinking to actually try set a tagline for designs to work with.

"A tool for transforming CSS with JavaScript" is almost perfect in my opinion.
It is just missing one important piece that is "plugins"
which communicates the most important concept behind PostCSS: modularity.
With such a small addition we have all we need to explain what PostCSS is in one line:

Thanks for suggestion,
We should bring this topic up for some hot discussion again soon.


Process assessments in the queue

Camunda workflows will no longer be invoked when new student_assessment records are created. Triggering a workflow will be a responsibility of a new scheduler.
All the student_assessment records will be associated with the application's current assessment alongside its creation, which means that the current assessment will always point to the most recent assessment record.
Multiple student_assessment records can be created and all will be executed in the creation order.
The student_assessment records for the same application should be executed in order, but different applications for the same students can be executed in parallel.
Two new schedulers will be created.

Assessment workflow execution (every few seconds): used to start and cancel workflows.
Assessment workflow execution retry (every few hours): used to retry start and cancelation operations that are taking too long.

Two existing queues will be still used.

start-application-assessment
cancel-application-assessment

New status will be created for the student_assessment table to allow its control by the schedulers.

Add also an extra column, similar to sims.applications.application_status_updated_on to track the date that the status was updated (e.g. student_assessment_status_updated_on).

Add a new column current_processing_assessment_id to the sims.applications to be updated by the scheduler. Every time that a record is queued for execution this new column will also be updated.

New status for the assessment

Created: when the student_assessment is created.

Set by the code creating the record. Can be the default value for the new column.

Queued: when the student_assessment is queued to be executed on Camunda. Change the status to Queued and call the queue after, in this way, if the Camunda call fails it will retry later because the status is already set.

Set by the new scheduler: Assessment workflow execution.

In progress: when the workflow id is associated with the student_assessment.

Se from a Camunda worker (e.g. associate-workflow-instance-task).

Completed: at the end by a dedicated worker.

Set by a new Camunda worker to be created.

Cancellation requested: when a workflow needs to be canceled, for instance, when the student cancels the application or the "Bulk offering update" happens and the application is in progress. The student_assessment can have the status updated to Cancellation requested to be selected by the specific queue and then have its status finally updated to Cancelled.

Set by the application code requesting the cancellation.

Cancellation queued: create a new item in the queue cancel-application-assessment. This queue should also be changed to update the student_assessment to Cancelled.

Set by the new scheduler Assessment workflow execution.

Cancelled: when the workflow is canceled or a call to Camunda to cancel the workflow returns a "Not found".

Set by the existing queue cancel-application-assessment.

Regular Assessment Lifecycle
For a single workflow execution, the assessments will progress as shown below.
Stage 1
The student_assessment record is saved to the database with the default Created status.

Stage 2
The record with Created status:

is selected by the assessment-workflow-execution-queue scheduler.
its status is updated to Queued.
Its id is also set in the application's current_processing_assessment_id column.
it is added to the start-application-assessment queue.

Stage 3

The workflow has its execution started by Camunda.
The associate-workflow-instance worker, besides setting the workflow_id in DB (already happening), also sets the workflow status to In progress.

During this stage, alongside the associate-workflow-instance execution, if another workflow was already set to process the student_assessment, use the job.cancelWorkflow(); to terminate its execution.

Stage 4
A new workflow worker is created at the end of the workflow to have the student_assessment record changed to completed.

Queued Assessment Lifecycle
On the occasion when more than one  student_assessment record is created, a scheduler will coordinate their ordered execution.
At any given time, assessments for one particular application can have 0 to 1 "Queued" records and 1 to n created records waiting to be processed.
Every time that a student_assessment record is queued its id is also set in the application's current_processing_assessment_id column.
Stage 1
Private Zenhub Image

Stage 2

Stage 3

Assessment Cancellation Lifecycle
The cancellation of a workflow is currently executed by the queue cancel-application-assessment. The Offering bulk change, for instance, executes also the bulk cancellation of any In progress application.
To allow the cancellation to also be handled by the schedulers, we can use the assessment status Cancellation requested to update any student-assessment to be canceled. The scheduler can then look for these records and try to execute the process and set the student-assessment as canceled.
The workflow cancellation process happen immediately and right now it is processed by cancel-application-assessment.processor.ts.

Schedulers
Assessment workflow execution (assessment-workflow-execution-queue)
Coordinate the execution of all the student_assessments to ensure its execution. Allow multiple student_assessments to be created and ensures their ordered execution and its association with the application's current assessment.
Execution interval
Executed every minute or some short interval to be discussed.
Target records

Any application where the current assessment is in Created status.
Any application where the current assessment is in Completed status and there is 1 to n Created assessment (waiting to be executed). Only the oldest assessment record in Created status will be selected for each application.

Process description

If the current assessment is in Created status.
1 - Change the status to Queued.
2 - Queue the assessment for execution (already existing start-application-assessment).
If the current assessment is NOT in Created status.
1 - Change the status to Queued.
2 - Update the application's current assessment to point to this record.
3 - Queue the assessment for execution (already existing start-application-assessment).

Assessment Workflow execution retry (assessment-workflow-execution-queue-retry)
Checks for any stalled Queued student_assessments that did not start after a long period.
Execution interval
Executed every few hours or some long interval to be discussed.
Target records
Any application where the current assessment is in Queued status for some long period of time (e.g. 6 hours).
Process description
Queue the assessment for execution (already existing start-application-assessment).
Refactors
Schedulers should trigger workflows
Stop triggering the start-application-assessment and the cancel-application-assessment from the applications. Only the new schedulers would be responsible for triggering the Camunda workflows and canceling them. We can consider maybe letting the "Original Assessment" trigger the assessment for a better user experience once the application is submitted.
Current points triggering the assessment workflow:

Application submission application.students.controller.ts
Student Appeal Request student-appeal.aest.controller.ts
Offering bulk change education-program-offering.service.ts
Scholastic standing student-scholastic-standings.institutions.controller.ts

Current points for canceling the assessment workflow:

Offering bulk change education-program-offering.service.ts

Notifications
Some assessment creations, like Scholastic Standing, also create notifications for the students. We should consider triggering these notifications when the specific assessment becomes the application's current assessment.
Other refactors

Check if the code current inside method startAssessment can be moved to the start-application-assessment queue.
Remove the no longer needed code assertAllAssessmentsCompleted.

Friendly business description
Summary of the technical work done so far for this epic.

Workflows are no longer initiated as soon as they are created. For instance, submitting a Student application can take up to 30s to start the process.
Any batch operation that can potentially create multiple assessments is now supported, like the below ones.

Business validations for Bulk Withdrawal Upload (#2112)
Institution Edits Offering (#1281)

Assessments can now be approved while the same application has already been with one assessment in progress. Before if the Ministry tried to approve one assessment while the other was in progress it would generate an issue.
Better error handling when the same assessment is started twice. Before an incident was generated in Camunda. Now the system can smart detect it and cancel the second incorrect instance.
Logs improvements.


Fix FEELS_LIKE bug, add sunrise and sunset times, improve code …

… readability with comments, remove unnecessary console logs.

This won't work. When you try to search for different cities it will say the city is not found .


Set Up Digital Workspace

Going to need a place for just holding all the issue information above - google, sharepoint, box, any other cloud provider. Maybe even a discord for chat? Then not flooding text messages with updated

lol this is more of a @beangirlie thing I, goes hand-in-hand with twitter

Documents / Legal / Presentations / Material and Media - google, sharepoint, box, any other provider
Communication / Updates / Project Management - Slack, discord, instant messenger 'you've got mail!'

I can create workspace under the rocketpsa.com domain in Google domains, which will give us working emails, G-suite features and what not (can also set it up under MS if we want the office suite).
For documentation/project management confluence and Jira are my typical go-tos.


YuMi Gripper Group Causes Errors on YuMi

Gripper group works for simulation, but not on the real controller since modifications need to be made to the Tasks and Modules of YuMi. Currently the master branch does not work properly with YuMi, but this issue is currently in the process of being fixed.

Issue fixed with recent commits


Fix get pools balance

Description
For the dashboard, we need the user's balance on every pool.

Current response:
{
  "pools": [
    {
      "pool": {
        "pool_id": 1,
        "assets": [
          {
            "token": {
              "denom": "uatom",
              "amount": "99800000001"
            },
            "weight": "107374182400",
            "usd_value": "0"
          },
          {
            "token": {
              "denom": "uusdc",
              "amount": "99800000001"
            },
            "weight": "107374182400",
            "usd_value": "0"
          }
        ],
        "pool_ratio": "50 : 50",
        "rewards_apr": "0",
        "borrow_apr": "0",
        "leverage_lp": "0",
        "perpetual": "0",
        "tvl": "0",
        "rewards": "0"
      },
      "balance": {
        "denom": "amm/pool/1",
        "amount": "99799999999999999987",
        "lockups": [
          {
            "amount": "99400000000000000000",
            "unlock_timestamp":<PHONE_NUMBER>
          },
          {
            "amount": "400000000000000000",
            "unlock_timestamp":<PHONE_NUMBER>
          },
          {
            "amount": "399999999999999974",
            "unlock_timestamp":<PHONE_NUMBER>
          }
        ]
      }
    }
  ]
}

I need to get rewards here too. cc @cosmic-vagabond