---
title: Desk routes
description: Every hash route the Desk page answers, the Browse query keys, and the routes and keyboard shortcuts added in 0.5.0. Taken from assets/desk/src/router.js and pages/browse.js.
sidebar:
  order: 7
---

The Desk is one page with hash routes, so a link to any screen works inside the published artifact. `src/router.js` parses the hash. Anything it does not recognise lands on Today.

## Routes

| Route | Page |
|---|---|
| `#/today` | [Today](/desk/today) |
| `#/inbox` | [Inbox](/desk/inbox) |
| `#/suggestions` | [Suggestions](/desk/suggestions) |
| `#/browse/<type>` | [Browse](/desk/records) one record type |
| `#/entity/<type>/<slug>` | One record. The last segment is the slug from the entity id `<type>--<slug>`, not the raw key |
| `#/views` | [Views](/desk/views) |
| `#/runs` | [Runs](/desk/history) |
| `#/runs/<id>` | One run |
| `#/settings` | [Settings](/desk/settings) |

Segments are URI-decoded. A query string after `?` is parsed on every page except Today; only Browse reads it today.

## Browse query keys

| Key | Meaning |
|---|---|
| `view` | Open a saved or built-in view by id. Any other key means the view was edited after opening, and the hash wins over the stored filters |
| `q` | Search text |
| `status` | `active` (default), `all` or `dropped` |
| `starred` | `1` shows starred records only |
| `tag`, `source`, `reason` | Filter by tag, producer or drop reason |
| `window` | `all` (default), `week`, `month`, `last-month` |
| `f.<field>` | The value a declared field must equal |
| `sort` | `<field>:asc` or `<field>:desc` |
| `group` | A field to group by |
| `cols` | Comma-separated column list |

## Example: Hiring Signals

```
#/browse/role?status=all&reason=not%20in%20title_keywords
#/browse/role?f.market=AU&sort=firstSeen:desc
#/browse/role?view=new-roles
#/entity/company/northwind-example
#/runs/2026-11-02-2200
```

The first shows the roles a `title_keywords` filter dropped, the second the newest Australian roles, the third the `new-roles` view the template ships.

## Added in 0.5.0

> Since 0.5.0.

| Route | Page |
|---|---|
| `#/approvals` | [Approvals](/desk/approvals) |
| `#/history?mode=list` | History as a list |
| `#/history?mode=cal` | History as a calendar |
| `#/history?mode=health` | History as health |
| `#/history?mode=activity` | History as an activity stream of people's decisions |
| `#/history/<id>` | One run |
| `#/inbox?tab=suggestions` | The Suggestions tab of the Inbox |

`#/runs` redirects to `#/history` and `#/runs/<id>` to `#/history/<id>`. `#/suggestions` keeps working, with Inbox highlighted in the navigation.

| Key | Does |
|---|---|
| `g t`, `g i`, `g a`, `g h`, `g s` | Go to Today, Inbox, Approvals, History, Settings |
| `g` then the first letter of a type's plural | Go to that type, when no other type or page key uses the letter |
| `/` | Search |
| `f` | Filters |
| `n` | Notifications |
| `[` | Sidebar |
| `?` | Shortcuts |
| Esc | Close |
| Cmd K or Ctrl K | Command palette |

Below 900px wide a bottom nav holds Today, Inbox, the first type, History and Settings.

## Common pitfalls

- **A field filter without the `f.` prefix.** `?market=AU` is ignored; use `?f.market=AU`.
- **Expecting a bad route to show an error.** It shows Today.
- **Linking to `#/approvals` on 0.4.0.** It lands on Today; the Approvals page arrived in 0.5.0.

## Related

- [Desk overview](/desk)
- [Views](/desk/views)
- [Definition schema: views](/reference/definition-schema#views)
