Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NdoleStudio/httpsms
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: NdoleStudio/httpsms
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feat/whatsapp-style-message-formatting
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 6 commits
  • 6 files changed
  • 2 contributors

Commits on Oct 3, 2026

  1. feat(web): add WhatsApp-style formatting for URL-backed phone messages

    - Render *bold*, _italic_, ~strikethrough~, `code`/```code block``` and
      "> " quoted lines on the thread page, only for messages whose owner
      phone uses an HTTP notification URL instead of an FCM token.
    - Auto-link raw URLs as clickable anchors, protected from markdown
      replacements via placeholder tokens.
    - Require markers to be bounded by whitespace, punctuation, or the
      start/end of the string, matching WhatsApp's own formatting rules.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Copilot-Session: a795297d-527c-4f30-a35a-ab379f2d50a8
    AchoArnold and Copilot committed Oct 3, 2026
    Configuration menu
    Copy the full SHA
    b3a209e View commit details
    Browse the repository at this point in the history
  2. fix(web): simplify URL notification token detection to https:// prefix

    Address review comment: use token.trim().toLowerCase().startsWith('https://') instead of checking multiple schemes/substrings.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Copilot-Session: a795297d-527c-4f30-a35a-ab379f2d50a8
    AchoArnold and Copilot committed Oct 3, 2026
    Configuration menu
    Copy the full SHA
    8541d97 View commit details
    Browse the repository at this point in the history
  3. fix(web): address code review on WhatsApp formatter

    - Preserve balanced parentheses in linkified URLs (e.g.
      https://example.com/page_(v2)) instead of always stripping the
      closing paren.
    - Support multiline fenced code blocks (```...```) where the content
      starts on the line after the opening fence.
    - Strip trailing formatting markers (*_~`) from a matched URL so
      "*https://example.com*" bolds the link instead of leaving an
      unmatched opening marker.
    - Protect already-rendered inline/fenced code from the bold/italic/
      strikethrough passes so markers inside code render literally.
    - Use a per-call random nonce for placeholder tokens so literal
      message text can never collide with a placeholder and silently
      disappear or get replaced.
    - Require the quote prefix to be exactly "> " (space required) so a
      bare ">" with no following space is left untouched.
    - Add an automated test suite (app/utils/whatsapp-format.test.ts) run
      via Node's built-in test runner (`pnpm test`), covering boundaries,
      quotes, code blocks, links, and escaping/placeholder safety.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Copilot-Session: a795297d-527c-4f30-a35a-ab379f2d50a8
    AchoArnold and Copilot committed Oct 3, 2026
    Configuration menu
    Copy the full SHA
    ad45dfe View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2026

  1. fix(web): only strip URL trailing marker when it pairs with an opener

    Trailing *_~` characters were stripped from every linkified URL, even
    when they're legitimate URL path characters (e.g.
    https://example.com/file_name_ linked to /file_name instead of
    /file_name_). Now a trailing marker is only dropped when the same
    character immediately precedes the URL, confirming it's an actual
    wrapping delimiter (e.g. *https://example.com*) rather than part of
    the URL itself. Sentence punctuation and balanced-parenthesis handling
    are unchanged.
    
    Also fixes a typo ("oe" -> "or") in a test case.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Copilot-Session: a795297d-527c-4f30-a35a-ab379f2d50a8
    AchoArnold and Copilot committed Oct 4, 2026
    Configuration menu
    Copy the full SHA
    131ed20 View commit details
    Browse the repository at this point in the history
  2. fix(web): avoid CodeQL incomplete-URL-substring-sanitization alert

    Replace .includes() URL substring checks in a test assertion with
    regex matches against the rendered href attribute. CodeQL flags raw
    .includes(url) checks as a potential (flawed) security validation
    pattern; this was only a test assertion on rendered output, but the
    rewrite is also a more precise check (it verifies the URL became an
    anchor's href rather than just appearing anywhere in the string).
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Copilot-Session: a795297d-527c-4f30-a35a-ab379f2d50a8
    AchoArnold and Copilot committed Oct 4, 2026
    Configuration menu
    Copy the full SHA
    31e6f3a View commit details
    Browse the repository at this point in the history
  3. fix(tests): raise sent/delivered poll timeout in rate-limit test to 30s

    TestSendSMS_RateLimit failed intermittently in CI: fireEvent dispatches
    the SENT/DELIVERED cloud event through an async loopback HTTP push
    (emulatorPushQueue), and the 15s poll window was too tight under CI
    load, failing right at the boundary. Other tests already poll the
    'delivered' status with a 30s timeout; align this test with that
    margin for both 'sent' and 'delivered' polls.
    AchoArnold committed Oct 4, 2026
    Configuration menu
    Copy the full SHA
    ad5950f View commit details
    Browse the repository at this point in the history
Loading