The shortcut to refuse an application is overridden by the shortcut to
move the record to the next statusbar stage
Steps to reproduce:
1. Install Recruitment
2. Go to Recruitment > Applications > All Applications and open any
application
3. Press and hold `alt`
4. The hotkey for the action 'Refuse' is shown (`x`)
5. With the `alt` key held, press on `x`
6. The application goes to the next stage instead of being refused
Solution:
Change refuse hotkey to `d`
Problem:
Commit https://github.com/odoo/odoo/commit/76b513917b4dad6eeecb4decac24e8c2d2c75b00
introduced a shortcut `alt+x` to move the record to the next state in
the statusbar. Because this shortcut has been chosen for its similarity
with shortcut `alt+shift+x` (Move to %s...), we prefer to change the
hotkey to refuse an applicant
opw-3206744
closesodoo/odoo#121395
X-original-commit: 37a9d552a5d581f14fd59728ea539726b1387f0b
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Signed-off-by: Guillaume Merlin (megu) <megu@odoo.com>
pos*: point_of_sale, pos_restaurant, pos_sale
Previously the pos would rerender the entire UI when the window was
resized. In practice, most components do not care about the size of the
UI for their rendering, and so we're doing a lot of needless work, and
also using an owl feature (deep renders) whose perennity is not certain
(we may want to remove the ability to do deep renders completely in the
future).
This commit changes the pos code to use the ui service `isSmall` field,
makes the ui service reactive so that components can subscribe to
changes inside of it with `useState`, and makes the ui service update
its internal state at most once per animation frame, instead of after
100ms without resizing, so that resizing the viewport results in a
smoother user experience.
closesodoo/odoo#121343
Signed-off-by: adgu-odoo <adgu@odoo.com>
This PR aims to change the target of the email widget to _blank. Indeed depending on
your mail provider, it can open the mail editor in your current tab and might not be
practical for the user if he needs information that was present on the previous tab
to compose the mail.
task-3324948
closesodoo/odoo#121277
Signed-off-by: Luca Vitali <luvi@odoo.com>
The fact that callback recorders are put in the env by the action
service has a serious disadvantage. A view using itself some View component
can have easily its own local state and global state polluted by that
subview (views use useSetupView). This would lead to very subtle
problems hard to detect and understand. Moreover, we view the callback
recorders as rather technical stuff and we would like the developers not
to have to think about them. For that reason we pass the callback
recorders as (optional) props to the View component that make them
available in the env. Note that the situation remains unchanged for
client actions (we do not have a View analog component for the actions).
closesodoo/odoo#121050
Related: odoo/enterprise#40901
Signed-off-by: Géry Debongnie <ged@odoo.com>
Before the PoS tours were mainly run with the `accountman` user, which
did not allow us to have a clear view of the permissions required for
each function of the Point of Sale.
Now, two users have been created for the PoS:
- `pos_user`
- `pos_admin`
The first one has no particular permission, he is a normal user of the
Point of Sale and Odoo, the second one is an administrator of the Odoo
application.
If the user `pos_user` is used and some permissions are missing in a
tour, these are added to the user with starting the test.
closesodoo/odoo#120380
Related: odoo/enterprise#40656
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
This commit allows to share spreadsheets to other users (public, portal or
internal without the required access rights)
See Enterprise commit. This commit prepares the ground to sharing
`documents.document` spreadsheets.
(I expect dashboard spreadsheet sharing in the near future which will
use the same generic code)
The challenges of sharing odoo spreadsheets
-------------------------------------------
Odoo spreadsheets can have any data from the database.
ODOO.PIVOT and ODOO.LIST functions specifically can target *any model*
and *any field*.
The values are dynamically loaded with RPC calls when the
spreadsheet is open. Normal access rights apply to load this kind of
"embeded" data.
A user can open a spreadsheet if he can read the `documents.document` record,
but odoo specific functions might result in errors if the user doesn't have
the access rights on the underlying model.
That's obviously not what we want when sharing a spreadsheet to an external
person. We want this person to see the values and not a spreadsheet full
of errors.
Giving access to external user?
---------------------------------
Users must have a very clear understanding what they are "leaking" when
they share a spreadsheet. Sharing a spreadsheet should not open any door
the user wouldn't think of or wouldn't understand.
The best way is to be very strict with the data we are sharing.
That means: only the specific models, specific fields and specific records
visible in the spreadsheet by the user who is sharing (different users can
see different values for the same spreadsheet, depending on their access rights).
We also want to consider the following scenario:
Alice is a newcomer (with very limited access rights) and she shares a
spreadsheet to a customer. A few years later, she is manager and has a
lot more access rights (groups, ir.rules, etc.).
The forgotten spreadsheet shared years ago should not leak more data because
Alice now has access to all company data.
Specification
=============
With all those challenges in mind, here is a first approach of shared
spreadsheet:
Readonly freezed spreadsheet for external users
-----------------------------------------------
When sharing a spreadsheet, we actually copy and freeze the spreadsheet at that
time. Odoo formulas are replaced with their value. This is the easiest and safest
way to deal with access rights to other models: there's no access to other
models at all ^^
The spreadsheet is displayed in readonly since it would only be editing a copy.
If the external person wants data to be updated, he can ask a new sharing link.
Read/Write for internal users
-----------------------------
The situation for internal users is different. We can rely on their actual access
rights.
When an internal user opens a spreadsheet sharing link, he is redirected to the
regular spreadsheet client action. A token is used to read/write the
`documents.document` record (and other linked models such as `spreadsheet.revision`),
but the data for pivots, lists, etc. is loaded with the user's own access rights.
If the user doesn't have the rights to read a model or field, the function results in
an error and that's the expected behavior.
This sharing strategy is perfectly fine for all spreadsheets that doesn't contain
any odoo data (think of all the Google Sheets we receive internally by email to
register to an event or any other stuff).
Future work
-----------
From a functional point of view, the spec is far from perfect.
Users would probably expect the data to "update" itself (not freezed).
People will want write access for external users as well.
Given the complexity of getting it right (from a tecnical, security and functional POV),
this is left for a later work
closesodoo/odoo#114040
Task: 3045808
Related: odoo/enterprise#37687
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
When importing data and checking the possible values of a field,
clicking on one of the records to open it throws an error
Steps to reproduce:
1. Install Projects
2. Go to Project > My Tasks and trigger the list view
3. Select any record and export it (check the import-compatible export
option)
4. Open the exported file and modify the `project_id` to a non-existing
project name
5. Click on Favorites > Import records
6. Upload the modified file and click on 'TEST'
7. In the `project_id` field, click on 'See possible values'
8. Click on any project, an error is thrown
Solution:
Prevent the form from being opened when the action is in target "new"
Problem:
Opening the record in a target new throws the error `switchView
called but the current controller isn't a view`
opw-3161777
closesodoo/odoo#121384
X-original-commit: 63d43713ea5b2efba2e63b1735954bb2069bc6f4
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Guillaume Merlin (megu) <megu@odoo.com>
Before this commit, the <hr/> in Discuss and Chatter
were not visible.
These <hr/> had no height but had a border. The border showed the
separator.
With the redesign of web client, <hr/> now have opacity of 25%.
This combined with borders being lighter made these separators
barely visible.
This commit removes border on these <hr>, which makes them use
their default visual, which is the same as a border.
closesodoo/odoo#121378
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
== ISSUE ==
The search component is using a `.bg-200` class which renders a grey
darker than the one of the `o_web_client`. Since we already define
a `background-color` for the web client, we do not need a custom one
on top of it.
== After this commit ==
We remove the `bg-*` class applied to the element so it matches the
`.o_web_client background.`
task-3326289
part of task-3326263
closesodoo/odoo#121347
Signed-off-by: Pierre Paridans (app) <app@odoo.com>
Before this commit, the input widgets that do not have units have their
text aligned to the left. However, when the content is numeric, it would
be better if the number was on the right, just as when there is a unit.
This commit also considers as numeric an input widget that has the
`data-step` attribute (and not only the `data-unit` attribute) and
forces the text alignment to the right in this case.
task-2798576
closesodoo/odoo#89055
Signed-off-by: Dieleman Guillaume <gdi@odoo.com>
Before this commit, now that multiple files can be uploaded in a form,
we could observe that the file input is not convenient to manage this
situation:
- Clicking again on the input to choose other files replaces the
previously uploaded ones, we can therefore not upload files one by one.
- A file cannot be deleted in an obvious way: we need to cancel a new
upload, as it will replace the file by nothing and therefore delete it.
- When multiple files are uploaded, only the number of files is
displayed and not their name (they are only displayed on hover).
This commit improves these behaviors:
- Clicking again on the input adds additional files instead of replacing
them (unless the number of files allowed is 1);
- The button text content is modified after the upload of files,
displaying "Add Files"/"Replace File" (if multiple/single files are
allowed) to show its role better.
- When files are uploaded, blocks containing each files name and a
cross to delete them are displayed.
In order to make these improvements, the file input is hidden and
replaced by an input of type=`button` when files are uploaded. This was
done for two reasons:
- It is not possible to modify the content of an input of type=`file`
but we can change the value of a button.
- The input did not look good with the file blocks, because it has a
text displaying file informations, which was redundant with the blocks.
task-2798576
Part-of: odoo/odoo#89055
Currently, we can only upload one file in a form File Upload field and
this file does not have a size limit. (Note that the server can have a
limit to prevent files too large from being uploaded but the file input
itself does not have one.)
This commit adds options to the form file inputs in order to set a
maximum number of files and the maximum file size (in MB) allowed to be
uploaded in these fields. The default values are 1 file and 1 MB. Note
that the option for the number of files is not displayed for the fields
where only one file is supposed to be uploaded.
If the uploaded files do not respect these limits, the form is not sent
and a message is displayed.
task-2798576
Part-of: odoo/odoo#89055
Before this commit
==================
when SO is confirmed and Delivery is created then add the shipping method
in SO, in this case, the shipping carrier is not set in the existing undelivered
delivery of that SO.
After this commit
=================
So in this commit, we set the shipping carrier for undelivered delivery.
taskId - 2946360
closesodoo/odoo#121363
X-original-commit: 51523c0dbf6ce9dd1a1ff35e03fa6a51267da14b
Signed-off-by: Tiffany Chang <tic@odoo.com>
Edition of block links has been broken several times.
This commit adds a test that makes sure it does not happen again by
changing the URL of a card of a mega menu with the Cards template.
task-3300977
closesodoo/odoo#121362
X-original-commit: b4b5816a4acd953eb4dabfd14d2a142934dee357
Signed-off-by: Vray Benjamin (bvr) <bvr@odoo.com>
[1] mistakenly removed the variable used by the mechanism that was
introduced in [2] to avoid updating link content.
This commit uses the link's `needLabel` instead to achieve the same
goal.
Steps to reproduce:
- Add a mega menu.
- Set the mega menu template to Cards.
- Click on the text of a card.
- DO NOT click on the edit link icon in the popover.
- Click on the href field in the options panel.
- Change the value.
=> Links content was broken (image was removed and texts were grouped).
[1]: https://github.com/odoo/odoo/commit/75166dbcd4962f30624fe19829757acbf8e76022
[2]: https://github.com/odoo/odoo/commit/7a0e58f8d7237514d23d815cdf3d81fc79edb1ec
task-3300977
X-original-commit: 1dbcf2825b2d495c206e110a39efe620e646e7c4
Part-of: odoo/odoo#121362
Previous to this commit, in discuss, when a user wanted to invite people
and select users, the 'selected users' tags were missing a gap between
them.
This commit adds a gap between them (adapted for milk).
task-3326399
part of task-3326263
closesodoo/odoo#121361
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
* = account, sale
This commit allows users to modify the panel image for the
onboarding steps. This is especially necessary for additional
onboardings that can be/could have been created, or if the
appointment onboarding was modified, as it was chosen to not
overly complicate the upgrade and simply not modify these records.
We also customize the placeholder icon to be one of these icons
instead of the default "camera" image.
Finally, a few icons are renamed to be more generally usable.
closesodoo/odoo#121349
Related: odoo/enterprise#41031
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Steps to Reproduce Issue for single picking:
1. Install Sales, Inventory
2. Create an SO and confirm
3. Go to the transfer, assign the done value to be less than demanded
4. Validate the transfer and cancel the backorder
Current Behavior:
There is no exception error on the SO chatter
Expected Behavior:
An exception error should be logged on the SO chatter
Other Info: When cancelling a backorder for a single picking,
the exception error about less quantity than expected is not logged on the SO.
"process_cancel_backorder" does not call _log_less_quantities_than_expected.
As defined in "process", the exception is only logged when validating multiple pickings at once but
one is to backorder but the other is not.
opw-3222508
closesodoo/odoo#121331
X-original-commit: a1dfc58eebd1badc3eea501b23861748b3762d75
Signed-off-by: Mylyna Hy (myhy) <myhy@odoo.com>
Signed-off-by: Tiffany Chang <tic@odoo.com>
Steps to reproduce:
- Install l10n_jp before the original commit
- Update code to latest
- Try to upgrade the l10n_jp module
Current behaviour:
Error shown because of missing account tax group.
Expected behaviour:
No error should be shown.
Explanation:
The new version of localisation changes the xmlid which caused the original tax group
cannot find the reference. Migrate them to prevent the error.
X-original-commit: 7a914a0
Close#118867closesodoo/odoo#121267
X-original-commit: 95bfdbf426e9109f90dce4955ceb6795931e5365
Signed-off-by: Josse Colpaert <jco@odoo.com>
The `sale.report `field `is_abandoned_cart` is moved from module
`website_sale_dashboard` to `website_sale`.
This allows to use it in the eCommerce dashboard in the community edition.
Task 3222991
closesodoo/odoo#121165
Related: odoo/enterprise#40979
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
Before: in Expense Categories list view, if Internal Notes wasn't empty it would cause a padding issue. The issue's cause was that the Internal Notes columns is an HTML field, where every line is assigned a margin-bottom.
Now: fixed the padding issue by removing the margin-bottom for the last line in the Internal Notes field.
task-32999162
closesodoo/odoo#121014
X-original-commit: f6bffc092ddc4bdfd9d68efe66dbbcdeed4f0309
Signed-off-by: William André (wan) <wan@odoo.com>
- This is a bridge module to provide support for EMV Merchant-Presented
QR-code generation for Payment System.
- Other accounting localisation module will override _get_merchant_account_info
method to construct the qr code parameters. This module will help creating the
crc16 check sum to append in the qr code vals.
Part-of: odoo/odoo#120050
The aim of this commit is to remove the specific complexity of the
kanban's progress bar from the relational model, and put it into the
kanban view itself.
This commit prepares and is part of the task that aim to refactor the
relational model and migrate it to owl.
part-of task-id 3179751
closesodoo/odoo#119781
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
In this commit, we add the list of rpc calls done in the progress bar
tests, this is done to avoid to add more rpc's doing the refactoring.
Part-of: odoo/odoo#119781
This commit button makes the kanban substack button
clickable everywhere - both in the icon and the x/y
indication next to it.
Additionally, this commit also makes it that the tooltip
on hover is shown when the user hovers over both the icon
and the x/y indication.
Task-3284498
closesodoo/odoo#119468
Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
Commit [1] commented the second half of a pivot test (I guess it
was done to debug it, and we forgot to uncomment it afterwards).
This small diff was then lost in the huge diff of the Milk PR.
This commit re-enables the full test, which luckily still pass.
[1] odoo/odoo@a1e05c8357closesodoo/odoo#121346
Signed-off-by: Pierre Paridans (app) <app@odoo.com>
Before this commit, when the user wants to self assign to a task for
instance, he has to write his name to be able to select himself.
This commit displays the current user first in the result of
`name_search` (the method called by relational widgets in JS).
If the current user does not satisfy the search condition then
he will not be in the result of the `name_search`.
task-3291745
closesodoo/odoo#121146
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Before this commit : The library underscore.js and
underscore.string.js were used in the ODOO solution.
After this commit : Every usages of a function from
underscore.js lib has been replaced with native javascript.
The goal is to remove all usages of underscore.js and to
not use anymore this library in ODOO.
---
TaskId : 3246238
closesodoo/odoo#120437
Signed-off-by: Géry Debongnie <ged@odoo.com>
before this commit, on editing a forum post
window title is shown as edit_post(id) as the
name is not set on the template.
after this commit, window title will be shown
as Edit Post.
closesodoo/odoo#114624
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Impacted modules:
- note
- test_discuss_full
The Notes app has been replaced by the todo app in a previous
commit. This commit remove the module note and all the references to its
models existing in other modules.
task-3085077
To avoid confusion with the generic name "todo" and to emphasize the
link with the module project, this module is renamed to "project_todo".
task-3085077
A new field component is designed to offer a simple usage of mark as
done (i.e. only 'done' and 'not done'). This component is used in the
Todo app (in both form and kanban view) to change the state of
todos (private tasks).
Behavior details:
- When the button is checked, the state of the todo is changed to
01_done
- When the button is unchecked, the state is restored to its initial
value if it is different to '01_done' or to '01_in_progress' instead.
task-3085077
During the creation of a private task (model project.task with not
project_id set), the current user is added as assignee. For all the demo
data, OdooBot is therefore added as a default assignee. This commit
avoid this situation by performing a check on user id at creation of a
private task.
task-3085077
- Impacted modules:
- todo
- project (test adaptation)
- mail (test adaptation)
- test_discuss_full (test adaptation)
All users will get a personalized onboarding to-do displayed in their
To-do app. This onboarding to-do shows:
- Tips on how to use the editor
- Guidance on how to use the mark as done and the convert to task action
- Information about to-dos visibility and sharing
task-3085077
This commit:
- Restrict the actions available in To-do to the static ones (archive,
unarchive, delete, duplicate)
- Add a action to convert todo to task
The conversion form, available through the action menu, allows to convert a
to-do/a private task (task with no project) to a task linked to a
project by setting:
- a project
- assignees
- project tags
This conversion form is only available in the form view of to-dos.
To be improved:
- Better management of the information displayed in the chatter when
setting followers to a to-do
task-3085077
Co-authored-by: Xavier Bol (xbo) <xbo@odoo.com>
In the module note, the name of a note was automatically computed based
on the begining of its content. Fot the module todo, we want the name to
be editable in the form view, while still keeping a clean interface for
the form. This commit makes therefore the name of a to-do directly
editable in the breadcrumbs. The behavior is a mix between the editable
breadcrumb name in Spreadsheet and the classical edition behavior for a
field in a form view, i.e:
- When creating a new to-do, a placeholder for the name is set to
_Untitled to-do_. A name must be entered before saving the record.
- A name entered in the Breadcrumb will be saved either if the save
button is pressed, either when the form view is quit.
- The discard button allows to go back to the last saved name.
The implementation relies, for its biggest part, on a new component
inheriting _CharField_ that copies some functions from the component
_SpreadsheetName_ used in Spreadsheet (see task-2621549) for the edition
part and use the autoResize hook from discuss recently moved into the
framework (see https://github.com/odoo/odoo/pull/117355).
The rest of the implementation consists of overrides of
_FormControlPanel_, _FormController_ and _formView_ to adapt the use of
this input field in the context of a form view (>< Spreadsheet).
task-3085077
- Impacted modules:
- todo (new module)
- note (deprecated app)
- project
- test_discuss_full (adding a dependency)
- Main changes:
- The Notes app is deprecated
- A To-do app is created to replace it
- The To-do app uses the model project.task (from module project)
for to-dos. To-dos are equivalent to private tasks (tasks without
project) with no parent task set.
- Private tasks/to-dos can either be displayed in the My Tasks menu
of the Project app or in the To-do app that proposes simplified
views to edit them.
- Details:
- depracation of Notes: Before the module note can be fully removed,
some changes still need to be done in other modules that use its
models (mainly note.note model). This commit deprecate the Notes
app in the meantime by removing it from the main menu/dashboard
and by replacing the creation of notes directly from the systray
by the creation of private tasks (to-dos).
- activity: In the systray, it is currently not possible to
segregate records using the same model. Therefore to-dos will
appear in the task section. This will change in the future when
this possibility will be implemented in mail.
- name generation: When edited from To-do, a name is auto-genrated
for private tasks. This behavior is similar to the one existing in
notes with a few adaptation to Todo UX. When a to-do is untitled
and saved (through the save button or when leaving the form view),
a name is generated based on the first line of the description of
this to-do. If the generated name is longer than 100 characters it
is truncated.
- security:
- project.task model need to be accessible in all crud modes to
all internal users as it is used in the to-do module. This is
a big change compared to the previous behavior where only
project users could edit tasks.
- project.tags model access is way more permisive now. All users
have access to edition/delition of tags as they are use in the
to-do app.
- Record rules: A similar behavior as the current one is
implemented, i.e:
- project users can access all tasks (with edition rights)
verifying one of the following conditions:
- they follow the task
- they follow the project the task belongs to
- they are assigned to the task
- the project the task belongs to is accessible for all
internal users.
- internal users have only read-access to the non-private
tasks shared with them.
- Those changes related to security only occurs when the app
To-do is installed. When it is note, the current behavior of
Project security-wise is kept unchanged.
Note on this last point: As the write access of internal users to
project.task is now managed with record rules, the form of this model
won't be displayed in read-only anymore when To-do is installed. This
will results in access error message for the tasks for which the write
access is restricted. Unfortunatelly, there is no better solution at the
moment as neither restricted read access, nor extendent write access for
internal users are desired. An improvement of the framework to deal with
such situation could be benificial.
task-3085077
We can send service product details if there are any one goods in the Invoice.
task - 3276398
closesodoo/odoo#119549
X-original-commit: 32b65ffcc9099ed312666f89acb3e651976c33ad
Signed-off-by: Josse Colpaert <jco@odoo.com>
In the multi-company context, it is possible to create
an analytic account without a defined company.
The result is that the analytic account
will not have a currency.
A traceback will be triggered when calculating the
profitability of a project
(for example by changing its status when
the 'sale_timesheet' module is installed).
Solution:
Use the currency of the project.
Introduced by:
68b4ea69c173dd5894bcb42b99e6818f241f9734
opw-3292417
closesodoo/odoo#121143
X-original-commit: 90512da68f776459a8a65bed285f5a178f9dd77d
Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
Signed-off-by: Lefebvre Thomas (thle) <thle@odoo.com>
The manual reconciliation widget is too complex. We completely remove it and
replace it with a simple wizard `account.reconcile.wizard` that opens when
selected lines can't be directly/silently reconciled (then we need a
write-off whose data will be filled in the wizard).
To do so we had to refactor reconciliation methods to allow to shadow some
values and fake reconciliation to get correct values.
We also now use of the _reconcile_plan instead of the previous reconciliation
which should be more efficient and correct.
Refactored a bit common between `test_account_reconcile_wizard` and
`test_account_move_reconcile` to avoid duplication.
In this process of simplification we also separate the previous `automatic_entry_wizard`
in two separate interfaces from the user's perspective: one only handle the change of
period and the other will handle complex transfer that are not possible through regular
reconciliation process (i.e. through the wizard we are creating in Enterprise related PR).
closesodoo/odoo#120832
Task: 3060792
Related: odoo/upgrade#4674
Related: odoo/enterprise#40510
Signed-off-by: Laurent Smet <las@odoo.com>
This pull request introduces an overall redesign that encompasses significant improvements in both usability and aesthetic.
Codenamed "**milk**", the project's primary goal is to enhance the overall UX and provide a visually appealing interface that promotes intuitive interaction.
### Key Design Features:
- **Improved use of `primary`color**
Previously, **all** action buttons were indistinctly assigned `primary`, regardless of their importance in the user flow. The only exception were "_hyper-secondary_" actions, which were intentionally de-emphasized to the extent of being represented solely by text.
However, this approach proved to be problematic for users since the UI failed to effectively guide them through the workflow.
Now, each view has a limited number of primary buttons that serve as clear **call-to-action** elements. The design of secondary buttons has been enhanced to give them more prominence and visual weight.
- **Control panel**
The redesign employs a consistent and responsive layout that prioritise clarity and simplicity while maintaining the component original functionalities. The information hierarchy has been reviewed, ensuring that essential actions are prominently displayed, while less critical elements are appropriately de-emphasized.
- **The new "_Cog Menu_"**
It consolidates actions specific to the current entry only, streamlining the user interface by centralizing functionalities that were previously scattered (e.g., Archive/Import/Export).

- **Font-size Enhancement**
The base font-size has been increased from `13px` to `14px` across the entire UI. This enhancement significantly improves readability, ensuring that text content is more legible and accessible to users. Moreover, the rendering of `fa` icons achieves now optimal clarity since were initially designed on a `14px` font-size base.
Furthermore, the `oi` icons have also been updated to the new font-size.
Although this change may seem small, it has significant consequences on the overall visual appearance, as spacing needs to be adjusted accordingly. While we are considering allowing users to customize these options, the current change represents a step forward in readability by reducing the amount of information displayed on the screen.
- **Badges**
Badges have been redesigned to provide a more consolidated design while ensuring comfortable readability. The color palette has been reviewed to strike a balance between aesthetics and readability, allowing the badge content to stand out while ensuring comfortable viewing.
- **AppIcons, Pictograms and users' avatars**
Deviate from the previous "fontAwesome design-line" and introduce a fresh design language that aligns with our branding strategy. All the assets now possess a unique and cohesive visual style, enhancing the overall user experience and strengthening our brand identity.
### SCSS:
- **Separate "Bootstrap Review" for Frontend and Backend Bundles**
Prior to this pull request, both the frontend and backend bundles were using the same `bootstrap_review.scss` file. However, as our backend design started to deviate from Bootstrap default, it became necessary to have a dedicated way to "review" Bootstrap styles specifically for the backend.
This pull request introduces two new stylesheets: `bootstrap_review_frontend.scss` and `bootstrap_review_backend.scss`. The original `bootstrap_review.scss` file remains as a shared asset, containing customizations needed by all bundles.
With this separation, we can now maintain distinct Bootstrap styles for the frontend and backend, enhancing clarity and flexibility of our codebase.
- **[NEW] `bootstrap_review_backend.scss`**
Reduce the need for cumbersome and unsightly overrides. By adopting a flexible and modular approach, we introduce a more consistent way of defining custom classes and custom legacy classes (e.g., `bg-black-50`).
See `bootstrap_review_backend.scss`.
- **[NEW] `utilities_custom_backend.scss`**
Manage/limit/fine-tune the generation of Bootstrap utility classes for the backend.
- **[NEW] `functions.scss`**
Unlike `utils.scss`, this file is accessible at any stage of the compilation process.
- **[NEW] `o_avatar` class**
Uniform avatars designs defining a common class shared across different modules.
- **[NEW] `o_tag` class**
Define a common class for any type entry generated by the `TagsList` component (either badges or avatars)
- **[IMP] overall spacing system**
Solved a long-standing issue regarding spacing variables in Odoo (e.g., `$o-horizontal-padding`) and Bootstrap default spacing. By harmonizing these two systems, we now enable the seamless utilization of Bootstrap utility classes to manage webclient spacing. This enhancement ensures a consistent and uniform spacing experience throughout the application
closesodoo/odoo#116641
Related: odoo/upgrade#4652
Related: odoo/enterprise#38775
Signed-off-by: Pierre Paridans (app) <app@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
Co-authored-by: Antoine (anso) <anso@odoo.com>
Co-authored-by: Brieuc-brd <brd@odoo.com>
Co-authored-by: Damien Bouvy <dbo@odoo.com>
Co-authored-by: Dardenne Florent (dafl) <dafl@odoo.com>
Co-authored-by: Elisabeth Dickinson <edi@odoo.com>
Co-authored-by: Florian Charlier <flch@odoo.com>
Co-authored-by: Julien Carion (juca) <juca@odoo.com>
Co-authored-by: Mathieu (mano) <mano@odoo.com>
Co-authored-by: Pierre Paridans <app@odoo.com>
Co-authored-by: Romain Estievenart <res@odoo.com>
Co-authored-by: Romeo Fragomeli <rfr@odoo.com>
Co-authored-by: chrysanthe(chgo) <chgo@odoo.com>
Co-authored-by: luvi <luvi@odoo.com>
Co-authored-by: stefanorigano (SRI) <sri@odoo.com>
Co-authored-by: xlu-odoo <xlu@odoo.com>