Skip to content

Add Help and Support to the account menu - #488

Merged
cdeutsch merged 12 commits into
mainfrom
claude/mak-116-help-and-support
Nov 12, 2026
Merged

cdeutsch merged 12 commits into
mainfrom
claude/mak-116-help-and-support

Conversation

@cdeutsch

@cdeutsch cdeutsch commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Fixes MAK-116 (Linear)

There was no way to read how anything works, or to reach the people running the instance, from inside the app. The account menu held the address, feedback, the legal links and Sign out. Someone whose import stalled, or who wanted to know how to make a table, had nowhere to click.

What changed

  • Help opens a new in-app page, /help, in the settings frame:

    • the formatting bar as a table of what each button writes in Markdown and its keys, spelled for the keyboard in use (⌘ on Apple, Ctrl elsewhere);
    • how to make a table;
    • the list and editor keys;
    • where import, export and the AI assistants live, with the copyable MCP address.

    It is on every instance, since nothing on it depends on who runs one.

  • Support where the instance names an operator. The menu order is help, support, feedback, legal, sign out.

    • With a front page, it links /support. That page carries the address too and answers most questions without opening a mail client.
    • Without a front page, it is an "Email support" mailto, because /support sends everyone to sign in there.
    • With no operator, there is no item, under the legal links' both-or-nothing rule.
  • Smaller changes:

    • McpUrl moved to components/, so both pages share it.
    • isAppleKeyboard is the one platform check, used by the help page and the editor's link hint.
    • A test checks every key the help page names against markdownKeymap.
    • The Android release note mentions the new menu items.

Departures from the issue

  • The issue asked for a "Contact" mailto. Since it was filed, /support landed and replaced the footer's mailto on purpose, so the menu links to it instead. A mailto remains only where there is no support page.
  • The issue said neither item should show on an instance with no operator. Help shows everywhere, because it has no dead link to avoid and a self-hosted copy needs it as much as anyone.
  • The page drops the issue's / for search: no such key exists. Search is ⌘F / Ctrl+F.

Not done

  • The table button's key (Ctrl+Shift+T / ⌘⇧T) is kept by browsers for reopening a closed tab, so the help page and the toolbar tip leave it out. Rebinding it is MAK-260.

Verified

  • Checked in the browser at desktop width, and at phone width in dark mode. The menu with no operator shows Help only. The page fits 375px with no horizontal scroll.
  • The Support variants are covered by AccountMenu.test.tsx and HelpPage.test.tsx.
  • tsc --noEmit passes, and so does the web suite (2,744 tests).
  • Two rounds of independent review: all findings fixed.

🤖 Generated with Claude Code

cdeutsch and others added 12 commits November 12, 2026 10:43
There was no way to read how anything works or to reach the people running the instance from inside the app: the account menu held the address, feedback, the legal links and Sign out. Someone whose import stalled, or who wanted to know how to make a table, had nowhere to click.

Help opens a new in-app page, `/help`, in the settings frame: the formatting bar as a table of what each button writes in Markdown and its keys (written as this keyboard writes them, Ctrl on Windows and Linux, since CodeMirror's `Mod` is Ctrl there), a short answer for tables, the list and editor keys, and where import, export and the assistants live. It is on every instance, since nothing on it depends on who runs one.

Support follows `supportLink`: the public `/support` page where the instance has a front page, since it carries the address too and answers most of what people write about without opening a mail client, and a plain "Email support" mailto where an operator is named but there is no front page, because `/support` sends everyone to sign in there. With no operator there is no item, under the legal links' both-or-nothing rule. The help page ends by pointing at the same place.

Fixes MAK-116

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The account menu's new Help and Support items are something a person notices in the app, and AGENTS.md asks for such a change to update the note in the same pull request. Added to the current note rather than starting it over, since `versionName` has not moved; it stays under Play's 500 characters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The help page named Ctrl+Shift+T (⌘⇧T on a Mac) for inserting a table, twice. Chromium and Firefox reserve that key for reopening a closed tab, so in a tab it never reaches the editor: the page sent people to a key that reopened their last tab. The table row now lists no keys, and the Tables panel points at the button and its size grid. The keyboard-spelling tests move to Strikethrough, which a page can bind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The table is headed "Button" and said to be the bar in its own order, but it listed Heading 3, which has no button: only Mod-Alt-3 makes one. Someone reading it would look for a button that is not there. It is now a line under the table naming the key.

The Link row also showed `[text](https://…)`, where `insertLink` writes `[text](url)` and selects `url`. The column is what each button writes, so it says that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The formatting table copies its keys from `markdownKeymap`, and a comment asking the next person to keep them in step was all that held them together. The test spells each listed shortcut the way CodeMirror does (`Mod-Shift-x`) and checks the keymap binds it, so a rebind fails here rather than leaving the page wrong.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The help page drew the MCP address as bare `<code>` in a sentence, a fourth copy of the URL beside three on the AI assistants page. The one thing a reader does with it is paste it into an assistant, and on a phone selecting a long run by hand is the hard part. `McpUrl` and its copy button move to `components/`, with a `mcpUrl()` that every place builds the address from, and the help page shows the address on a line of its own as the settings page does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"Bringing notes in" read as the whole list but left out Joplin exports and PDFs or images, both of which Settings, then Import takes. Someone with a Joplin archive or a folder of scans would have read that their case was not covered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`.help-keys` repeated `.about-list`'s grid, hairlines and phone breakpoint with slightly different padding and gap, so two settings-frame pages had two near-identical row rhythms. The list now uses `.about-list`, and keeps only one rule of its own: its label column is not muted, since the key is what a reader scans for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inly

Cmd/Ctrl+A selects every note only from the list (in the editor it selects text), and Esc clears a selection as well as closing search, which the row above it had just started. The last panel, the one a stuck person scans for, was headed "Something else"; it is "Still stuck?" now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The help page brought a second check beside the editor's `MAC` in `rich-markdown.ts`, with a slightly different pattern and a user-agent fallback, so the two could come to disagree about which keys a Mac shows. `isAppleKeyboard` is the one check now, used by both, and a function so a test can stub `navigator`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tip read "Table (⌘⇧T)". Chromium and Firefox reserve Ctrl+Shift+T and ⌘⇧T for reopening a closed tab, so in a tab the key never reaches the editor, and on Windows and Linux the tip named the wrong modifier besides. The help page already stopped promising it; the tooltip now agrees. The binding stays for where it does arrive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The keymap test covered the formatting table only. The page also names Mod-Alt-3 for a third-level heading and Mod-Shift-F for lining up a table, in sentences, where a rebind would have slipped past it. Both are named constants now, used by the page and checked by the same test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Preview: https://unbent-pr-488.of2668.workers.dev

Sign in with Continue on the dev instance: a preview cannot register
its own OAuth callback (its host changes every PR), so it borrows a Google
session from https://dev.unbent.app and comes back signed in. A password with an
allowlisted address still works too.

Runs against the shared unbent-dev database, bucket and note stores (the same
notes as the dev instance), so what you change here changes there too. Production
is untouched. The Worker is deleted when this PR closes.

Worker unbent-pr-488 · deployed a97bd60

@cdeutsch
cdeutsch merged commit f7f9d23 into main Nov 12, 2026
14 checks passed
@cdeutsch
cdeutsch deleted the claude/mak-116-help-and-support branch November 12, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant