Settings reference
Every setting in Revue: where it is in the Settings tab, what it does, its default and its key in settings.json.
Most settings take effect as soon as you change them; there is no Save button. They are kept in plain JSON files in Revue's config folder, so you can also back them up, sync them or edit them by hand (see Files, sync and settings for one computer).
Open Settings#
- Press Ctrl+, (Cmd+, on macOS), or
- click the gear button (Settings) in the title bar, or
- click the Settings tab once it's open.
Settings opens as a tab in the main window. The sidebar lists its sections; with no text field focused, j / ↓ go to the next section and k / ↑ to the previous one. Middle-click the Settings tab to close it.
A warning triangle on the Settings tab or gear means some repositories you work with have no local clone set (see Repository sections).
Shared or kept on this computer#
Your settings are shared with your other computers when you sync Revue's config folder. Some cards have a small Shared / This computer switch in their title. Click it to keep that card's settings on this computer only: other computers keep their own value, and this one never sends its value to them. Click again to share it again (this computer's value then becomes the shared one).
Cards with the switch: Theme, Density, Language, Focus mode, Text, Default apps, Slack (under Apps), Language servers, Updates and a repository's Local clone.
Three settings are always kept on this computer, whatever the switches say: the token store switch (Where tokens are kept) and the clone folders (Where repositories are cloned).
Advanced: how the switch works
- Shared settings are in
settings.jsonin the config folder; settings kept on this computer are insettings.local.jsonin the data folder, which is never synced. The switch's tooltip shows the exact path. - The switch moves whole JSON keys. For example Text moves
ui_font,code_font,text_sizeandcode_text_sizetogether, and Local clone moveslocal_repos, the clones of every repository at once. credential_store,clone_folderandclone_foldersare only ever read from and written tosettings.local.json. If another computer'ssettings.jsonhas them (written by hand), they are ignored.- The merge rules are on Files, sync and settings for one computer.
Appearance#
How Revue looks. Details and guides: Themes, fonts, focus mode and languages.
| Setting (UI label) | JSON key | Options | Default | Notes |
|---|---|---|---|---|
| Theme: Light / Dark / As the system | dark, follow_system | dark: true/false; follow_system: true/false | Dark (dark: true, follow_system: false) | Ctrl+Shift+T (Cmd+Shift+T on macOS) switches light and dark and stops following the system. Switchable to This computer. |
| Theme: Dark theme | theme_dark | a color theme id, e.g. revue-dark, revue-dim, nord, dracula, github-dark, or an imported theme | empty = Revue Dark | dim: true (older setting) picks Revue Dim when theme_dark is empty. |
| Theme: Light theme | theme_light | a color theme id, e.g. revue-light, nord-light, github-light | empty = Revue Light | |
| Density | compact | Comfortable (false), Compact (true) | Comfortable | Applies everywhere: text, paddings, rows, hit targets. Switchable. |
| Smooth scrolling | smooth_scroll | on / off | on | The mouse wheel glides instead of jumping; touchpads aren't affected. Part of the Density card. |
| Animations | animations | on / off | on | Off: folds, glides and spinners change at once, smooth scrolling too. Part of the Density card. |
| Language | language | System ("system"), English ("en"), Čeština ("cs") | System | System uses your computer's language if Revue has it, else English. A Restart button appears: some text in open fields and dialogs changes only after a restart. Switchable. |
| Focus mode | focus_width | 80, 100, 120, 140, 160, 200, 240 or No limit (0) | 120 | The widest code gets in focus mode, in characters (on each side of a split diff). - and + in focus mode change it too. Switchable. |
| Text: Interface font | ui_font | Automatic or an installed font family | Automatic (key absent) | Only installed fonts are listed. Switchable (with the rest of Text). |
| Text: Interface size | text_size | 80%, 90%, 100%, 110%, 125%, 150% | 100 | Zooms the whole interface. Ctrl+= / Ctrl+- step it, Ctrl+0 resets it (Cmd on macOS). |
| Text: Code font | code_font | Automatic or an installed font family | Automatic | Diffs, the Code tab, code blocks. |
| Text: Code size | code_text_size | 80% to 150% as above | 100 | Relative to the interface size. |
| Code theme (dark mode / light mode) | code_theme_dark, code_theme_light | Match app theme (key absent) or a code theme id; Import… adds one | Match app theme | Syntax colors. Not switchable. |
| File icons | file_icons, file_icon_theme | None ("none"), Plain ("plain"), or a theme (file_icons: "themed" with file_icon_theme: "material", "vscode-icons", "catppuccin", "symbols") | Material | Catppuccin follows dark and light mode. |
Advanced: theme keys
- The Theme card's switch moves
dark,dim,follow_system,theme_darkandtheme_lighttogether. dimis from before themes had names. Revue keeps it in step when you pick Revue Dim.- A theme id that isn't known (for example an imported theme deleted on another computer) falls back to Revue Dark or Revue Light.
- Imported color and code themes are files in the config folder (
color-themes/,code-themes/), so they sync with it.
Behavior#
| Setting (UI label) | JSON key | Options | Default | Notes |
|---|---|---|---|---|
| Tab switching | tab_switching | Visual order ("visual"): left to right as in the tab bar, wrapping around; Last used ("last_used"): back to the previous tab, press again while holding Ctrl to go further back | Visual order | Applies to Ctrl+Tab and Ctrl+Shift+Tab (Ctrl on macOS too). Goes through pull request, repository, ticket and Settings tabs, never the Pull requests or Repositories pages. |
| Comments: Double-click a pending comment to edit it | double_click_edits | on / off | off | In a pull request's Files view, a double click on one of your pending comments (not sent yet) starts editing it, like its pencil button. Comments already posted aren't edited by a double click. |
| Rows per page | list_page_size | 10, 15, 25 or 50 | 15 | How many pull requests the Pull requests page, and how many projects the Projects page, show at a time; Next and Previous below the list go through the rest. Only the rows on screen ask the service for their details (and the projects on screen for their icons). |
| Search results | search_limit | 5, 10, 20 or 30 | 10 | The most pull requests a search on the Pull requests page asks each service for, besides the ones already listed. |
Notifications#
Desktop notifications, shown by the system while Revue runs, when something happens to a pull request that concerns you: "alice approved acme/web#42" with the pull request's title. Clicking one opens its pull request in Revue (on macOS the notification can't be clicked through). Never for what was there when Revue started, for what you did yourself, twice for the same thing, or for the pull request on screen in the focused window. Not in the browser version. Kept on this computer only (notifications in settings.local.json).
| Setting (UI label) | JSON key | Default | Notes |
|---|---|---|---|
| Desktop notifications | notifications.desktop | on | Off, none shows; the switches below keep their state. |
| Review requests | notifications.review_requested | on | Someone asks for your review. |
| Approvals | notifications.approved | on | Someone approves your pull request. |
| Changes requested | notifications.changes_requested | on | Someone requests changes on your pull request. |
| Comments and mentions | notifications.commented | on | Someone comments on your pull request, or mentions you in one. One notification per person. |
| Merged | notifications.merged | on | Someone merges your pull request. |
| Failing checks | notifications.checks_failed | on | Your pull request's checks fail. |
Where they come from lists your accounts:
- GitHub and Forgejo: their notifications, read with the pull request list (every minute and a half; GitHub's minimum interval is respected and an unchanged answer doesn't count against its rate limit). Only a pull request whose notification changed is read again. Clicking a notification marks it read on the service too.
- Bitbucket has no notifications to read: Revue compares the pull request list between its updates. It tells review requests, approvals, requested changes and failing checks, but not who approved, nor comments or merges.
- A sign-in that can't read notifications says so there, and gets the same as Bitbucket until it can: on GitHub a fine-grained token (they can't read notifications; Revue's own sign-in and a classic token with the
repoornotificationsscope can), on Forgejo a token without theread:notificationscope (sign-ins made before Revue asked for it). Sign in again under Accounts, then click Check again.
The system must show notifications: on Linux a notification daemon (most desktops have one), on Windows notifications allowed for Revue, on macOS for Script Editor (which shows them for Revue).
Apps#
What Revue opens things in. More: Clones, worktrees and opening in your tools and Links and opening from anywhere.
| Setting (UI label) | JSON key | Options | Default | Notes |
|---|---|---|---|---|
| Default apps: Code editor | editor | Automatic or an editor Revue found on your computer | Automatic: the system's or the first found | Used by Open in editor in a pull request's or repository's header. Picking another app there changes this too. Switchable (whole card). |
| Default apps: Terminal | terminal | Automatic or a terminal Revue found | Automatic | |
| Default apps: AI assistant | assistant | Automatic or an assistant Revue found (a command-line one, like Claude Code, starts in the terminal) | Automatic: the first found | |
| Default apps: Custom editor and Arguments | editor_command | a program (Choose… picks it) and optional arguments | not set | For an editor not in the list. The folder goes where %f is, else last. It then shows as Custom editor in the list. |
| Slack: Open in | slack_open_in | Slack app ("app"), Browser ("browser") | Slack app | Where Open in Slack opens a message. Slack's app gets a slack:// link and may open at the channel only; the browser opens the message itself. If the app isn't found, messages open in the browser. Switchable (with Slack app). |
| Slack: Slack app | slack_app | a program, app bundle or desktop entry (Choose…) | empty = the one found | Shows Found Slack at … or Slack app not found. |
| Pull request links | (none) | Register as handler / Register again / Unregister; bookmarklet with Copy | not registered | Makes revue:// links open Revue. Nothing is saved in settings: it registers Revue with your system. On macOS, Revue.app handles them on its own and there's nothing to register. See Links and opening from anywhere. |
Language servers#
Go to definition and Find references in the Code tab work without installing anything. Language servers make them more precise. Full guide: Language servers.
| Setting (UI label) | JSON key | Options | Default | Notes |
|---|---|---|---|---|
| Use language servers | language_servers | on / off | off | Off: no server runs (running ones stop) and none is downloaded. A repository can still turn them on in its own section. Switchable (with the server list). |
| Each server: Bundled / System / Custom / Off | lsp_choices.<server id> (mode, path, args, off) | mode: "bundled" (Revue downloads and updates it), "system" (the one installed, or for some servers an editor's usual port), "custom" (a program or address you enter, with Arguments); off: true = never runs, downloads or connects in any repository | off until you pick a source | The list has a filter (Filter by language or extension) and buttons such as Download, Download all, Download relevant servers and Look for newly installed system servers. |
Advanced: language server keys
- A server with no entry in
lsp_choicesis off. An entry without"off": trueis on. argsempty means the server's usual arguments.- Which servers suit a repository is detected once per repository and kept in
settings-cache.json(detected_language_servers,detected_reasons), on this computer only. Servers stopped by hand in the Code tab are kept there too (stopped_servers, by checkout folder). - Per-repository choices are in
repo_servers(see Repository sections).
Accounts#
Sign-ins to GitHub, Bitbucket Cloud, Forgejo (Codeberg, Gitea), Jira and Slack. How to sign in to each: Accounts and signing in.
| Card | Controls | JSON key | Default | Notes |
|---|---|---|---|---|
| Revue account | Sign in to Revue, Create a Revue account; signed in: Keep new sign-ins in my Revue account, Move my sign-ins…, Computers…, Security…, Activity…, Sign out | (none; kept with the sign-ins' tokens) | signed out | Optional: your sign-ins on every computer, end-to-end encrypted. Hidden without an account server. See Revue account. |
| Revue account server (under Advanced) | Account server, Use, Built-in | revue_account_server | the built-in server | This computer only. |
| GitHub accounts | Add GitHub account; per account Track and Sign out | untracked_accounts (Track off) | every account tracked | Tracked accounts fill the pull request list; untracked ones still open PR links. |
| Also sign in with the gh CLI or GITHUB_TOKEN / GH_TOKEN | system_credentials | off | Uses the gh CLI's sign-in or the GITHUB_TOKEN / GH_TOKEN environment variables too. | |
| Bitbucket accounts | Add Bitbucket account; per account Track, Workspaces…, Sign out | untracked_accounts | tracked | The watched workspaces are kept with the account, not in settings.json. See Bitbucket Cloud. |
| Forgejo accounts | Add Forgejo account; per account Track, Sign out | untracked_accounts | tracked | See Forgejo, Codeberg and Gitea. |
| Jira | Connect Jira / Add Jira account; per account Sign out | (none) | See Jira. | |
| Slack | Connect Slack / Add Slack workspace, Slack messages…, Sign out; Use your own Slack app (Client ID, Client secret (only without PKCE), Redirect URL, Save, Copy app manifest, How to set up Slack) | (none; your own app is kept with the sign-ins) | Revue's own Slack app | See Slack. |
Slack messages#
Who people are on Slack and what Revue posts there. Without a connected Slack workspace, this section only says so, with Connect Slack in Accounts. Full guide: Slack.
| Card | Setting (UI label) | JSON key | Default | Notes |
|---|---|---|---|---|
| People on Slack | a person's Their login → their Slack user (Add, Remove) | slack_people | nobody | For authors Revue can't find by email. Picking someone on the Tag line of the review dialog adds them here too. |
| Where to post in Slack | the default channel for All repositories, and per service and account | slack_messages.default_channel, slack_messages.service_channels | none | The channel the Open pull request form starts on. An account's default beats its service's, a service's beats the one for all repositories. A repository's own (in its section) beats all of them. |
| Message formats | Message language: Same as the app or a language | slack_messages.language | Same as the app | Language of the built-in wording and the verdict's words. |
| A new pull request with a ticket: the ticket's message, the pull request in its thread | slack_messages.single (on = false) | on | Off: both in one message. | |
| End messages with a small ↗ Revue link, and the forwarding page address | slack_messages.revue_link, slack_messages.revue_page | on, Revue's own page | The link opens the pull request in Revue, through a web page that forwards to revue://. | |
| each message's text, Attach file…, Reset to default, Preview, Placeholders | slack_messages.templates, slack_messages.attachments | built-in texts, no files | Text is Slack's mrkdwn. Attached files are copied into the config folder (slack-attachments/). | |
| Opening Slack | Apps… | Shortcut to the Slack card under Apps. |
The last channel picked per repository is remembered in slack_messages.channels.
Diff#
Defaults for a newly opened pull request. The diff toolbar (and its keys) changes them for the open pull request. More: Reviewing the diff.
| Setting (UI label) | JSON key | Options | Default | Notes |
|---|---|---|---|---|
| Layout | single_file | One scroll (false), File by file (true) | One scroll | f switches it for one PR. A PR with over 100 files opens one file at a time until you pick. |
| Diff style | split | Split (true), Unified (false) | Split | s switches it for the open PR. |
| Changed files | file_tree | Folder tree (true), Flat list (false) | Folder tree | |
| Threads panel | show_conversation | Shown, Hidden | Shown | t shows or hides it for the open PR. |
| Threads panel opens on | threads_visible_first | All (false), Visible (true): the threads on the files on screen | All | Its tabs switch it for that PR. |
| Resolved threads: Show resolved threads | show_resolved | on / off | off | The panel's Show resolved toggle changes it for one PR. |
| Threads from others: Show threads from others | show_others | on / off | off | Off: only threads you started, replied in or are @-mentioned in. Show from others changes it for one PR. |
Remembered from the diff toolbar#
These have no card in Settings. Revue remembers them when you toggle them in a diff, for every pull request:
| Toggle | JSON key | Default | Notes |
|---|---|---|---|
| Hide whitespace-only changes (w) | ignore_whitespace | off | Like git diff -w. |
| Ignore merge commits: hide them, and what they brought in | ignore_merges | off | Commit ranges leave out what merges brought in; the commit list hides them. |
| Changed-files sidebar shown or hidden (b in a repository) | show_files | shown | Pull requests and repositories. |
| Follow the diff's scroll (changed-files list) | sync_file_list | on | The file list scrolls along with the diff. |
| Show ignored files (file lists, the Code tab's tree) | show_ignored_files | off | |
| Show image previews above the code / beside the code | preview_placement | "above" | "beside": in a column right of the diff (above when there's no room). |
| Checkerboard / Light / Dark behind transparent pixels | preview_backdrop | "checker" | "light", "dark". |
| Rows per page (paged lists, such as a repository's pull requests) | page_size | 10 | 10, 20 or 50. |
Ignored files#
One list of patterns for generated files, lock files, snapshots and the like. Matching files start collapsed in diffs (one click expands them), and Find in Files skips them unless you tick Include ignored files.
| Setting (UI label) | JSON key | Options | Default | Notes |
|---|---|---|---|---|
| Ignored files (text box) | auto_fold | gitignore-style patterns, one per line | lock files of common package managers, minified files and source maps, test snapshots, build output, generated code, Godot and Unity metadata | Saved as you type. Reset to default puts Revue's list back and removes your own patterns (asks first). |
Advanced: pattern rules and the default list
- A plain name matches in any folder; a path with
/matches from the repository root;*and**are wildcards. - The default list:
package-lock.json,npm-shrinkwrap.json,yarn.lock,pnpm-lock.yaml,bun.lock,bun.lockb,deno.lock,Cargo.lock,go.sum,flake.lock,poetry.lock,uv.lock,Pipfile.lock,pdm.lock,composer.lock,Gemfile.lock,mix.lock,packages.lock.json,pubspec.lock,Podfile.lock,Package.resolved,*.min.js,*.min.css,*.map,*.snap,__snapshots__/**,dist/**,build/**,out/**,.next/**,*.generated.*,*.g.dart,*.pb.go,*_pb2.py,*.designer.cs,*.import,*.uid,.godot/**,*.meta,*.unity,*.prefab,*.asset. - When a new Revue version adds patterns to the default list, they're added to your saved list once (
ignored_defaultstracks this). Patterns you removed later stay removed.
Ignored repositories#
Repositories you ignored are left out of the Repositories and Projects pages, the Ctrl+K list (Cmd+K on macOS) and the Settings sidebar, and their pull requests are left out of the pull request list and its counts. Ctrl+K still finds them when its search asks the services.
| Setting (UI label) | JSON key | Default | Notes |
|---|---|---|---|
| Ignored repositories, each with Stop ignoring | ignored_repos | none | Ignore a repository with the crossed-out eye on its row (Repositories, Projects), Ignore in its section here, or Ignore repository / Ignore its N repositories when you right-click it or its folder in the Settings sidebar. |
Storage#
What Revue keeps on disk, and where. Paths and syncing: Files, sync and settings for one computer.
| Card | Controls | JSON key | Default | Notes |
|---|---|---|---|---|
| Cache | the cache's size and folder, Open folder; rows Source checkouts, Language servers, API responses, each with Clear; Clear everything | (none) | Clearing is safe: anything needed again is downloaded again. Every clear asks first. Drafts and settings are never in the cache. | |
| Large files in sources | Ask (before a repository's first download), Skip them (in every repository), Keep them (in every repository, up to 2 MB a file) | skip_large_assets (null = Ask, true = Skip, false = Keep); repo_skip_large_assets per repository | Ask | Files over 1 MB that aren't text. Only matters for accounts that download sources file by file (Bitbucket signed in through the browser). Picking here replaces the answers given per repository. |
| Settings files | Shared and This computer files with Open; Export settings…, Import settings… | Shows both paths and which settings this computer keeps for itself. See Export and import. | ||
| Where tokens are kept | Keep tokens in the macOS Keychain (macOS), Keep tokens encrypted for your Windows user (Windows), Keep tokens in the Secret Service (GNOME Keyring, KWallet…) (Linux) | credential_store | off: a file readable only by you | Always this computer only. If the store can't be used, Revue says so and nothing changes. Off again: tokens go back to the file and the store's entry is deleted. On macOS, choose Always Allow if macOS asks after an update. |
| Where repositories are cloned | Default, then each service and account you're signed in to, each with Choose… and clear | clone_folder (Default), clone_folders (per service such as github.com, or account such as github.com/octo) | Not set: Clone asks where | An account's folder beats its service's, a service's beats the default. Always this computer only. |
| Language servers (when any was downloaded) | each download with open and delete buttons; Open folder | Servers set to Bundled download again when needed. | ||
| Source checkouts by repository (when there are any) | each repository with Pull requests and History sizes, open and clear buttons; Open folder | The 3 most recently used pull request checkouts and the 3 most recently used commit checkouts are kept per repository. |
About#
| Card | Setting (UI label) | JSON key | Default | Notes |
|---|---|---|---|---|
| Updates | Install updates automatically | auto_update | on | New versions download in the background; restart to use them. Check now checks at once. Switchable. See Updates. |
| About | Releases, Source | Your version and links to the project. |
About is pinned to the bottom of the sidebar.
Repository sections#
Below the fixed sections, the sidebar lists REPOSITORIES: the ones with open pull requests and the ones you set something up for, grouped in folders like on the Repositories page. Detect clones for all searches your home folder for clones of the listed repositories, then lets you choose which to set. A repository without a clone shows No local clone set.
Each repository's section has these cards:
| Card | Controls | JSON key | Default | Notes |
|---|---|---|---|---|
| Local clone | the clone's folder, Detect (searches your home folder), Choose…; Worktrees created by Revue with Delete worktree | local_repos ("owner/repo" → folder) | none | With a clone, the Code tab checks the source out as a worktree of it instead of downloading it, and PR pages offer the worktree with the PR's branch. Switchable (applies to every repository's clone). See Clones, worktrees and opening in your tools. |
| Language servers | per server Default / On / Off; Detect / Detect again | repo_servers ("owner/repo" → server id → true/false) | Default: what detection found, if language servers are on | A server turned off in Settings → Language servers shows as off here and can't be turned on. |
| Where to post in Slack (with Slack connected) | a channel, or Don't announce | slack_messages.repo_channels | the default from Slack messages | |
| Ticket links for owner/repo | rules (Key prefix → Opens), Add rule, Remove rule, Add Jira projects | repo_links ("owner/repo" → list of {prefix, url}) | none | Turns keys like ABC-123 into links. In the URL, <num> is the number and <key> the whole key; prefix * matches any key. Rules are checked before Jira. See Links and opening from anywhere. |
| Try it | a text box | Type text with ticket keys to see where they link. | ||
| Ignore this repository | Ignore | ignored_repos | Brought back from Ignored repositories. |
Only in settings.json#
A few things are kept with the settings but changed elsewhere in the app:
favorite_prs,favorite_repos,favorite_projects: what you starred (f in the lists).untracked_accounts: the accounts with Track off.
What Revue remembers rather than what you set (open and pinned tabs, recent items, the list's filters, panel widths) is in state.json, not settings.json.
All settings.json keys#
Every key, alphabetically. "File" says where it lives: shared = settings.json (or settings.local.json when switched to This computer), local = always settings.local.json, state = state.json, cache = settings-cache.json. A key that's missing takes its default.
| Key | Type | Default | File | What it is |
|---|---|---|---|---|
animations | bool | true | shared | Appearance → Density → Animations |
assistant | string or null | null (first found) | shared | Apps → AI assistant |
auto_fold | list of strings | the default list | shared | Ignored files patterns |
auto_update | bool or null | null (on) | shared | About → Install updates automatically |
bitbucket_repos | list | (read only) | From older versions: read once to find watched workspaces, never written | |
bitbucket_workspaces | list | (read only) | From older versions: seeds Bitbucket accounts' workspaces, never written | |
branch_list | object (sort, mine) | default order | state | A repository's branch list: its order and only my branches |
clone_folder | string or null | null (asks) | local | Storage → Where repositories are cloned → Default |
clone_folders | object: service or account → folder | {} | local | Storage → Where repositories are cloned, per service and account |
code_font | string or null | null (Automatic) | shared | Appearance → Text → Code font |
code_text_size | number (percent) | 100 | shared | Appearance → Text → Code size |
code_theme_dark | string or null | null (Match app theme) | shared | Appearance → Code theme, dark mode |
code_theme_light | string or null | null (Match app theme) | shared | Appearance → Code theme, light mode |
compact | bool | false | shared | Appearance → Density |
credential_store | bool | false | local | Storage → Where tokens are kept |
dark | bool | true | shared | Appearance → Theme: dark (else light) |
detected_language_servers | object: repo → server ids | {} | cache | Servers detected for each repository |
detected_reasons | object: repo → server → text | {} | cache | Why each was detected ("40 .tsx files") |
dim | bool | false | shared | Older Revue Dim switch, used when theme_dark is empty |
double_click_edits | bool | false | shared | Behavior → Double-click a pending comment to edit it |
editor | string or null | null | shared | Apps → Code editor |
editor_command | string or null | null | shared | Apps → Custom editor and Arguments |
favorite_prs | list of pull requests | [] | shared | Starred pull requests, listed first |
notifications | object (desktop, review_requested, approved, changes_requested, commented, merged, checks_failed: bools) | all true | local | Notifications |
favorite_projects | list of strings | [] | shared | Starred Jira projects |
favorite_repos | list of repositories | [] | shared | Starred repositories, under Favorites |
file_icon_theme | string | "material" | shared | Appearance → File icons theme (material, vscode-icons, catppuccin, symbols) |
file_icons | "none", "plain", "themed" | "themed" | shared | Appearance → File icons |
file_tree | bool | true | shared | Diff → Changed files |
focus_width | number (characters, 0 = no limit) | 120 | shared | Appearance → Focus mode |
follow_system | bool | false | shared | Appearance → Theme → As the system |
hide_viewed | bool | false | shared | Not used by the current version |
ignore_merges | bool | false | shared | Diff toolbar: ignore merge commits |
ignore_whitespace | bool | false | shared | Diff toolbar: hide whitespace-only changes |
ignored_defaults | number | current | shared | Which default ignored patterns your list already took in |
ignored_repos | list of repositories | [] | shared | Ignored repositories |
language | "system", "en", "cs" | "system" | shared | Appearance → Language |
language_servers | bool | false | shared | Language servers → Use language servers |
list | object | defaults | state | The pull request list's tab, filters, sort and account |
local_repos | object: owner/repo → folder | {} | shared | A repository's Local clone |
lsp_choices | object: server id → {mode, path, args, off} | {} (all off) | shared | Language servers: each server's source |
list_page_size | 10, 15, 25, 50 | 15 | shared | Behavior → Rows per page (Pull requests and Projects pages) |
page_size | 10, 20, 50 | 10 | shared | Rows per page of paged lists |
panel_files | number or null | null | state | Remembered width of the changed-files panel |
panel_threads | number or null | null | state | Remembered width of the threads panel |
pinned_prs | list of pull requests | [] | state | Pinned pull request tabs |
pinned_repos | list of repositories (with branch) | [] | state | Pinned repository tabs |
preview_backdrop | "checker", "light", "dark" | "checker" | shared | Image previews' backdrop |
preview_placement | "above", "beside" | "above" | shared | Image previews' placement |
projects_tab | string | empty | state | The Projects page's tab |
recent | list of pull requests | [] | state | Recently opened pull requests |
recent_repos | list of repositories | [] | state | Recently opened repositories |
repo_account | string | empty (first) | state | The Repositories page's account |
repo_links | object: repo → rules | {} | shared | A repository's Ticket links |
repo_servers | object: repo → server → bool | {} | shared | A repository's Language servers On / Off |
repo_skip_large_assets | object: repo → bool | {} | shared | Large files in sources, answered per repository |
show_conversation | bool | true | shared | Diff → Threads panel |
show_files | bool | true | shared | Changed-files sidebar shown |
show_ignored_files | bool | false | shared | File lists show ignored files |
show_others | bool | false | shared | Diff → Show threads from others |
show_resolved | bool | false | shared | Diff → Show resolved threads |
single_file | bool | false | shared | Diff → Layout (File by file) |
skip_large_assets | bool or null | null (Ask) | shared | Storage → Large files in sources |
slack_app | string or null | null (the one found) | shared | Apps → Slack → Slack app |
slack_messages | object | defaults | shared | Slack messages: templates, single, language, revue_link, revue_page, channels, attachments, default_channel, repo_channels, service_channels |
slack_open_in | "app", "browser" | "app" | shared | Apps → Slack → Open in |
revue_account_server | string or null | null (built-in) | this computer | Accounts → Advanced → Revue account server |
passkey_servers_trusted | list | [] | this computer | The account servers whose passkey pages you trusted when Revue asked (see Revue account) |
slack_people | list | [] | shared | Slack messages → People on Slack |
smooth_scroll | bool | true | shared | Appearance → Smooth scrolling |
split | bool | true | shared | Diff → Diff style (Split) |
stopped_servers | object: checkout folder → server ids | {} | cache | Language servers stopped by hand |
sync_file_list | bool | true | shared | The changed-files list follows the diff's scroll |
system_credentials | bool | false | shared | Accounts → Also sign in with the gh CLI or GITHUB_TOKEN / GH_TOKEN |
tab_order | list of pull requests | [] | state | The pull request tabs, left to right |
search_limit | 5, 10, 20, 30 | 10 | shared | Behavior → Search results |
tab_switching | "visual", "last_used" | "visual" | shared | Behavior → Tab switching |
terminal | string or null | null | shared | Apps → Terminal |
text_size | number (percent) | 100 | shared | Appearance → Text → Interface size |
theme_dark | string | empty (Revue Dark) | shared | Appearance → Dark theme |
theme_light | string | empty (Revue Light) | shared | Appearance → Light theme |
threads_visible_first | bool | false | shared | Diff → Threads panel opens on |
ui_font | string or null | null (Automatic) | shared | Appearance → Text → Interface font |
untracked_accounts | list of account ids | [] | shared | Accounts with Track off |
Advanced: editing settings.json by hand
- Revue notices when a settings file changes on disk (edited by you, or synced from another computer) and reads it again; no restart needed.
- If
settings.local.jsondoesn't fit (a wrong type, say), Revue ignores it and uses the shared settings alone. A shared file that can't be read gives the defaults. - Revue rewrites
settings.jsonwhen it saves, so your own formatting there isn't kept.settings.local.jsonis only rewritten when what it holds changes. - Keep the JSON valid. A
settings.jsonRevue can't read counts as empty, and the next change you make in the app saves the defaults over it. - Keys of
state.jsonorsettings-cache.jsonfound in a settings file (saved by 0.17 or older) are moved to their own files the first time Revue reads them.