Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[Bug] Inbox: heading-anchor links in Markdown attachments do not scroll to existing targets

Open
#2,229 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
68/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
markdown, typescript
Domain
frontend

Research direction

Start by locating the Inbox Markdown attachment preview and compare how it handles same-document heading links with standalone Annotate, where the supplied fixture scrolls correctly. Reproduce with the synthetic guide.md and click “Jump to target”; done when the existing target heading scrolls into view inside the attachment’s scroll container.

Written by the indexing model from the issue text.

Description

What happened?

Clicking a same-document heading link in the Inbox Markdown attachment preview does not scroll, even though its target heading and DOM id exist. The same fixture scrolls in standalone Annotate.

Reproduction

In an empty directory, run this Python fixture generator (all content is synthetic):

from pathlib import Path
import base64

Path('assets').mkdir(exist_ok=True)
Path('assets/sample.png').write_bytes(base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAIAAAAt/+nTAAAATklEQVR4nO3PUQkAIBTAwBfHYMY2jCH8OITBAtxm7fN1wwUNaEEDWtCAFjSgBQ1oQQNa0IAWNKAFDWhBA1rQgBY0oAUNaEEDWtCAFjx2AWvKQKaxk0G4AAAAAElFTkSuQmCC'))
Path('guide.md').write_text(
    '# Attachment preview repro\n\n'
    '[Jump to target](#target-section)\n\n'
    '[Open linked document](peer.md)\n\n'
    '![Sample image](assets/sample.png)\n\n'
    + ''.join(f'Public filler paragraph {i+1}. This is sample text to put the destination below the fold.\n\n' for i in range(65))
    + '## Target section\n\nTarget marker.\n'
)
Path('peer.md').write_text('# Linked document\n\nPublic sample destination.\n')
  1. Start plannotator inbox --no-open.

  2. Use the Inbox MCP send_message tool with project_path set to this directory and attachments containing the absolute path to guide.md.

  3. Open that thread and click the guide.md attachment.

  4. Click Jump to target near the top of the attachment.

  5. Compare with plannotator annotate guide.md (dismiss first-run announcements if shown).

Actual vs expected

Measured at a 1400×900 viewport, with exactly one id="target-section" in each document:

Surface Target heading top before click Target heading top after click
Standalone Annotate 3017px 740px — visible inside the viewport
Inbox Markdown attachment 2990px 2990px — still below the viewport

Expected: clicking the heading link brings the existing target into view within the attachment's scroll container. The standalone destination is near the document end, so it need not align to the top edge.

This concerns clicking a local #target-section link, not Back-button scroll restoration in #2082 / #2128.

Environment
  • Plannotator: official 0.28.32, Darwin ARM64 binary.
  • OS: macOS 27.0.1, Apple silicon.
  • Browser: fresh Chromium 155.0.8059.12, headless, 1400×900 viewport.
  • Agent: standalone CLI/MCP reproduction; original workflow uses Pi.
  • Surface: Inbox web UI → Markdown attachment preview.
  • Isolated temporary HOME/data directory; no existing browser profile or private document needed.
Dominant language
TypeScript
Stars
8.7k
Forks
649
Avg merge
6h
Merged PRs (30d)
514

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from backnotprop/plannotator

All issues in backnotprop/plannotator

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.