---
title: Personalisation
order: 2
updated: 2026-07-21
---

# Personalisation

The *Personalisation* tab lives under *Settings* in both the web app and the desktop app. It is your **private** space for adjusting how the app behaves for *you* — nothing you change here touches any other user, and an administrator can't override it. It is where you rename your login, switch dark mode, scale the app up or down, tune notifications, set the window your dashboard opens on, and pick which columns your quotation and purchase-order PDFs print by default.

Which sections you see depends on your permissions (and, for a couple of controls, on whether you're on the desktop app or the web app). The page never shows a section you can't use.

## Open the tab

1. Open *Settings* in the sidebar.
2. Pick *Personalisation*. The page heading reads *Personalization* ("Customize your experience").

The page is a stack of cards. From top to bottom: *Account*, *Appearance* (unlabelled — the dark-mode / zoom / desktop card), *Dashboard*, *RFQ Cart*, *Notifications*, *Enquiry*, and *Procurement*. Cards you don't have permission for simply don't appear.

## Account

The *Account* card holds a single row, *Change Username*, which opens the *Change Username* modal.

> This whole card is **hidden for the built-in `admin` login** — the firm's `admin` account can't rename itself here.

### Change Username

Updates the username you type when you log in. The modal has two fields:

- *Current Password* — your existing password, required to authorise the change. This is checked server-side against your stored password; a wrong password is rejected with *Current password is incorrect*.
- *New Username* — the username you want. Rules (enforced both in the modal and re-checked on the server, so a forged request can't bypass them):
  - `3`–`32` characters.
  - Only **lowercase** letters, digits, and the symbols dot `.`, dash `-`, and underscore `_`. Anything typed is lower-cased and trimmed automatically. Spaces, capitals, and other symbols are rejected.
  - Cannot be the same as your current username.
  - Cannot be a username already taken by another user in your firm (rejected with *This username is already in use*).

Press *Update Username* to save. On success your live sessions are refreshed so the new name shows everywhere immediately; you keep using the app without re-logging-in. There is no email or notification sent for a username change.

## Appearance (dark mode, zoom, and desktop options)

The second card (no heading of its own) holds the look-and-feel switches. The first two rows work in **both** the web app and the desktop app; the last three appear **only in the desktop app**.

### Dark Mode

A switch that flips the whole app between light and dark themes for eye comfort. It takes effect instantly and is remembered for next time. Works in the web app and the desktop app.

### Zoom Level

Scales the entire app up or down — handy on high-resolution or very small screens. A dropdown with exactly three settings:

- *Less Zoomed (90%)*
- *Normal (100%)* — the **default**.
- *Zoomed (120%)*

The choice applies instantly and is remembered between sessions. On the desktop app the level is a multiplier on top of the app's own per-display base size, so *Normal* always equals the app's default size on every screen. On the web app it is applied as a browser zoom on the page. Works in both the web app and the desktop app.

> **Ctrl + scroll and Ctrl +/− are deliberately disabled in the desktop app** so the layout can't be knocked out of place by accident. Use this *Zoom Level* dropdown instead — see the [common questions](#the-desktop-app-ignores-ctrl-scroll-to-zoom-how-do-i-change-the-size) below.

### Disable Sidebar (desktop only)

A switch that hides the left sidebar and moves the navigation menu into the titlebar, saving horizontal space. Off by default (sidebar shown). Only appears in the desktop app — it changes the desktop window shell and has no meaning in the browser.

### Auto Hide Titlebar (desktop only)

A switch that automatically hides the window titlebar to save vertical space. Off by default. Desktop app only.

### Low Performance Mode (desktop only)

A switch that reduces animations and optimises for low-memory devices. Toggling it **reloads the app** so the change takes full effect. Off by default. Desktop app only.

## Dashboard

The *Dashboard* card sets the defaults applied when you open the dashboard.

### Default Date Range

The date window the dashboard opens on. A dropdown of five presets:

- *Current Month*
- *Past 30 Days*
- *This Year*
- *This Financial Year* — the **default** (also the fallback for anyone who never opened this setting). The Indian financial year runs 1 April → 31 March.
- *Last 365 Days*

Your choice is saved to your user account, so it follows you across devices. It is applied the **next time** the dashboard mounts — it doesn't retro-change a dashboard you already have open. You can still pick any other window (including a custom range) from the date pickers at the top of the dashboard; this preset only decides the starting window. The server rejects any value that isn't one of the five presets, so a forged request can't wedge a bad range into your profile.

## RFQ Cart

The *RFQ Cart* card **appears only if you have permission to send enquiries to suppliers** (`procurement.sendEnquiryToSupplier`). That's also the only group of users the auto-fill actually applies to, so hiding it for everyone else avoids a dead control.

### Default Closing Date

A number field — a count of **days**. Allowed range `0`–`3650` (whole days only; decimals are floored, negatives snap to `0`).

When you press *Send Enquiry* on the [RFQ Cart](/docs/procurement/rfq-cart) and the sourcing event has no closing date yet, a date picker pops up **pre-filled to this many days from the moment you send** — not frozen to when you first opened the cart, so a deadline you set by adding items over several days is always measured from the actual send. You can still adjust the date in that prompt before confirming.

- Set it to any value `1`–`3650` to get the prompt.
- Set it to `0` to turn the prompt off entirely (the legacy behaviour — no auto-suggested closing date).

The field **saves on its own as you type** (debounced, ~0.7 s after you stop) — there is no Save button. The server accepts only a whole number in `0`–`3650`; anything else (negative, fractional, out of range) is rejected so a bad value can't later corrupt the computed closing date.

## Notifications

The *Notifications* card has two rows.

### Notification Preferences

Opens the *Notification Preferences* modal, where you choose how each notification event reaches you. Events are grouped into tabs (*General*, *Enquiry*, *Purchase*, *Inventory*, *HR*); **only tabs and events you have permission to act on are shown** — an empty tab is hidden entirely. Each event has a dropdown with four modes:

- *Enabled* — full notification (in-app, and OS/mobile push when your mobile session is offline).
- *In App* — shown inside the app only.
- *Silent* — recorded to history without alerting you.
- *None* — suppressed.

Each change **saves automatically** — there is no Save button. The full meaning of each mode and how mobile push works is covered in [Notifications](/docs/settings/notifications).

### Notification History

Opens the *Notification History* modal to browse past notifications, jump to the related screen, mark them read, or clear the list. See [Notifications](/docs/settings/notifications) for the full guide.

## Enquiry

The *Enquiry* card **appears only if you can create, queue, or send quotations** (any of `enquiry.createOffer`, `enquiry.queueOffer`, or `enquiry.sendOffer`). It holds one row: *Quotation Columns*.

### Quotation Columns

Opens the *Quotation Column Defaults* modal, which sets which columns your **quotation PDF** prints by default. These are only your personal starting defaults — you can still tick/untick columns on any individual quotation at send time, and the settings here don't rewrite quotations already sent.

Each row is a toggle showing *Visible* / *Hidden*. The PDF prints its columns left to right in a fixed order — `Sr`, `Product`, `Qty`, `Unit Price`, `Disc %`, `Discounted Price`, `Amount`, `Tax %`, `Tax Amount`, `Total` — and each toggle only decides whether its column appears. (`Product` always prints, so it has no toggle here.) The columns and their **default state for quotations**:

| Column | What it prints | Quotation default |
|---|---|---|
| *Sr No.* | Row number (`Sr`) | Visible |
| *Quantity* | Quantity and unit (`Qty`) | Visible |
| *Unit Price* | The base price entered on the line, before discount | Visible |
| *Discount* | The discount percentage (`Disc %`) | Visible |
| *Discounted Price* | The unit price after the discount is applied | Visible |
| *Amount* | Quantity × discounted price — the line value before tax | Visible |
| *Tax* | Each line's GST rate (`Tax %`) plus the tax money on the line (`Tax Amount`); totals then shown inclusive of tax | Hidden |
| *Total* | `Amount` + `Tax Amount` with the tax columns on; the same figure as `Amount` with them off | Visible |
| *Grand Total Row* | A sum row at the bottom of the table | Hidden |

**Grand Total Row gotcha:** it can only be turned on when *Total* is on, **or** *Amount* is on, **or** *Discount* is off. If none of those hold, *Grand Total Row* is disabled (greyed out) and auto-unticked — the row would otherwise be ambiguous.

**These are starting points, not guarantees.** When a quotation is actually generated, two columns are dropped from the ticked set if they would print nothing useful on that document: *Discount* and *Discounted Price* when every line's discount is `0`, and *Amount* while the *Tax* columns are off (`Total` already shows that exact figure). Saving them *Visible* here still matters — the moment the document does carry discounts, or tax is switched on, they come back — and whoever generates the document can always tick them on by hand for that one PDF.

Press *Save* to store the defaults on your account. The server only accepts the known boolean keys and ignores anything else. See [Generate a quotation](/docs/enquiry-bank/generate-quotation) for how these columns look on the finished PDF.

## Procurement

The *Procurement* card **appears only if you can send purchase orders to suppliers** (`procurement.sendPurchaseOrderToSupplier`) or you are an admin. It holds one row: *PO Columns*.

### PO Columns

Opens the *PO Column Defaults* modal — the same toggles as *Quotation Columns*, in the same printed order, but they control the **Purchase Order PDF** and start from different defaults. As before, these are just your starting defaults; you can override them per-PO at send time.

The columns and their **default state for purchase orders**:

| Column | What it prints | PO default |
|---|---|---|
| *Sr No.* | Row number (`Sr`) | Visible |
| *Quantity* | Quantity and unit (`Qty`) | Visible |
| *Unit Price* | The base price entered on the line, before discount | Visible |
| *Discount* | The discount percentage (`Disc %`) | Hidden |
| *Discounted Price* | The unit price after the discount is applied | Visible |
| *Amount* | Quantity × discounted price — the line value before tax | Visible |
| *Tax* | GST rate (`Tax %`) plus the tax money on the line (`Tax Amount`); totals shown incl. tax | Hidden |
| *Total* | `Amount` + `Tax Amount` with the tax columns on; the same figure as `Amount` with them off | Visible |
| *Grand Total Row* | Sum row at the bottom of the table | Visible |

The same *Grand Total Row* rule applies (needs *Total* on, *Amount* on, or *Discount* off), and the same two auto-drop rules apply when a PO is generated — no discounts anywhere hides *Discount* and *Discounted Price*, and tax off hides *Amount* — again only as defaults you can tick back on for that PO. Press *Save* to store the defaults; the server sanitises the payload to the known boolean keys just like the quotation version.

> **Where the PO *text* templates live:** the PO subject/body/terms and the PO number format are firm-wide and set elsewhere, under *Settings → Firm Customisation*. This card only controls **your** PDF line-item columns. See [Document templates](/docs/settings/document-templates#purchase-order-personalisation).

## Common questions

### Are these settings shared with my team, or can my administrator change them?

No — everything on this tab is personal to you and stored on your own account. An administrator can't see or change your personalisation. Firm-wide defaults (document wording, numbering, logo, email accounts) live under *Firm Customisation* instead — see [Firm customisation](/docs/settings/firm-customisation) and [Document templates](/docs/settings/document-templates).

### Why don't I see the *Disable Sidebar*, *Auto Hide Titlebar*, or *Low Performance Mode* toggles?

Those three only apply to the desktop app's window shell and are hidden in the web app. Open the desktop app to use them.

### The desktop app ignores Ctrl + scroll to zoom — how do I change the size?

The desktop app deliberately blocks the Ctrl + scroll and Ctrl +/− zoom shortcuts so the layout can't be knocked out of place by accident. Use the *Zoom Level* dropdown in the *Appearance* card instead — *Less Zoomed (90%)*, *Normal (100%)*, or *Zoomed (120%)*. Your choice is remembered between sessions.

### Why can't I see the *Account* card / *Change Username*?

The built-in `admin` login can't rename itself from here, so the whole *Account* card is hidden for that account. Every other user sees it.

### Why can't I see the *Enquiry* card?

The *Enquiry* card appears only if you can create, queue, or send quotations. Without any of those permissions there's nothing for it to configure.

### Why can't I see the *Procurement* card / *PO Columns*?

The *Procurement* card appears only if you can send purchase orders to suppliers, or you're an admin. Without that, PO column defaults aren't relevant to you.

### A date picker pops up when I send an RFQ — why?

You have a *Default Closing Date* set (any value `1`–`3650`) under the *RFQ Cart* card. Whenever you send an RFQ that has no closing date yet, the app asks you to confirm one — pre-filled to that many days from the moment you send. Adjust it and send, or set the value to `0` to stop the prompt. See [RFQ Cart](/docs/procurement/rfq-cart).

### I changed my quotation/PO columns but an already-sent document still shows the old set — why?

Column defaults only affect documents generated **after** you save them, and only as a starting point — the columns are also overridable on each individual quotation or PO at send time. Anything already sent keeps the columns it went out with.

### Why is *Grand Total Row* greyed out?

It's only available when the *Total* column is on, *Amount* is on, or *Discount* is off. Turn *Total* (or *Amount*) back on — or turn *Discount* off — and the *Grand Total Row* toggle becomes selectable again.

### I set *Discount* / *Discounted Price* / *Amount* to Visible, but the document didn't print them.

That's deliberate, and only ever a default. *Discount* and *Discounted Price* are left out when **every** line on that quotation or PO has a discount of `0` — the `Disc %` column would be all dashes and `Discounted Price` would repeat `Unit Price`. *Amount* is left out while the *Tax* columns are off, because `Total` already shows the same number; switch *Tax* on and *Amount* reappears by itself. In either case you can tick the column back on in the send screen's column menu for that one document, and that choice is saved with it.

### Does my dashboard date-range choice follow me to other devices?

Yes — it's saved on your user account, not just the current browser or machine. It's applied the next time you open the dashboard; a dashboard already open won't retro-change until you reload it.

### I need to change my password, not my username — where is that?

Password changes live under *Settings → Security*, not here — see [Security](/docs/settings/security). This tab only changes your **username**.
