Call History Guide - magicbug/Cloudlog GitHub Wiki

This page explains how the Call History feature works in Cloudlog, including setup, supported file format, and behaviour in QSO Entry and Contesting.

Overview

Call History lets you upload callsign membership lists (for example, FOC/CWops-style lists) and show matching member details while entering QSOs.

Current implementation goals:

  • Per-user files (each user only sees and uses their own uploads)
  • N1MM-style call history file support (.txt / .csv)
  • Fast lookup while typing callsigns
  • Safe operator workflow (no hidden contesting field overwrites)

Where to Manage Files

Open:

  • Tools -> Call History

On the Call History management page, you can:

  • Upload a file
  • Set an optional file label
  • Set an optional organisation label (example: FOC)
  • Set priority (lower number = higher priority)
  • Enable/disable a file
  • Delete a file

Supported Upload Format

Accepted file types:

  • .txt
  • .csv

Expected format:

  • N1MM-style call history data
  • Optional header row is supported
  • Callsign matching is case-insensitive and normalises Ø to 0

Typical fields used by Cloudlog:

  • Callsign
  • Name
  • Exch1 (membership/member number)

If a file has no header row, Cloudlog uses fallback column positions compatible with common N1MM exports.

QSO Entry Behaviour

Page:

  • QSO Entry (/index.php/qso?manual=0 or manual mode)

Behavior:

  • While typing a callsign, Cloudlog performs a call-history lookup
  • If there are matches, membership info is shown in the existing "previous contacts/times worked" card area
  • If there are no matches, the membership section is hidden

For each match shown:

  • Organization label + member number (Exch1) + name
  • Copy to SIG button

Copy to SIG action:

  • Sets SIG to organisation label (example: FOC)
  • Sets SIG INFO to member number (Exch1)

This is explicit operator action (manual copy), not an automatic overwrite.

Contesting Behaviour

Page:

  • Contesting (/index.php/contesting?manual=0 or manual mode)

Behavior:

  • While typing a callsign, Cloudlog performs a call-history lookup
  • If there are matches, a "Call History Membership" panel appears
  • If there are no matches, that panel stays hidden

Important:

  • Contesting is display-only for the call history
  • No contest fields are auto-populated from call history

This is intentional to avoid interfering with high-rate contest exchange entry.

Data Storage

Database table:

  • callhistory_files

Stored metadata includes:

  • user_id
  • labels (file_label, organization_label)
  • active flag and priority
  • upload metadata (filename, size, mime, checksum)
  • parser status fields

File storage path:

  • uploads/callhistory/{user_id}/

Git behavior:

  • Upload directory is ignored by git (.gitignore)

Permissions

  • Feature requires logged-in user access level authorize(2)
  • Users can only manage their own call history files

Troubleshooting

No membership result appears

Check:

  • File is uploaded and marked Active
  • Callsign exists in the uploaded file
  • Callsign format uses valid characters (Cloudlog normalizes Ø to 0)

Panel appears then disappears (QSO page)

Current behaviour should keep membership details in the previous contacts card section while callsign remains matched. If it still disappears, verify that custom JS or browser cache is not serving older script files.

Wrong organisation/member mapping

Check:

  • Organisation Label value on upload page
  • Source file has expected Exch1 / membership column
  • Header row names are standard N1MM-style where possible

Operational Notes

  • If multiple active files contain the same callsign, multiple membership rows can be shown
  • Priority controls matching order, but all matches can still be displayed
  • Use concise organisation labels (FOC, CWOPS, FISTS) for cleaner SIG values