TicketForge CATS and CMA Scraper Versionsgeschichte – 25 Versionen
TicketForge CATS and CMA Scraper von RailwayMealCalculator
Seien Sie vorsichtig mit alten Versionen! Diese Versionen werden zu Test- und Referenzzwecken angezeigt.Sie sollten immer die neueste Version eines Add-ons verwenden.
Neueste Version
Version 2.2.8
Veröffentlicht 17. Mai 2026 – 202,41 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherLC Mode: scraper no longer gets stuck after a PSTS17B navigation
failure. Previously, the F3-back chain that should have landed on
the supervisor-mode menu was walking one F3 too many and exiting
supervisor mode entirely, breaking the rest of the scrape. Fixed
in this release. The scraper now stops at the menu screen, and
as a backstop, re-enters supervisor mode automatically if it
somehow loses it anyway.
This release also bundles internal-logging fixes from v2.2.7 that
weren't pushed to AMO.Quelltext steht unter der Alle Rechte vorbehalten
Ältere Versionen
Version 2.2.7
Veröffentlicht 17. Mai 2026 – 201,19 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherInternal diagnostics fix. The bug-reporting channel the extension
introduced in v2.2.4 was misconfigured and never actually reached
the support side, so when scrapes failed we had nothing to look at.
v2.2.7 finishes wiring it up. No change to scrape behavior, no
change to the panel, no change to the data you see in TicketForge.
If v2.2.6 works for you, v2.2.7 works identically.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.2.6
Veröffentlicht 17. Mai 2026 – 201,19 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherLC Mode: when the scraper exhausts its PSTS17B (Crew Info) navigation
strategies for a ticket, it now offers to record your manual recovery
and use it as training data for a future release. The recording is
opt-in per-failure, and before anything uploads you see a preview
modal with per-frame strip and per-input mask controls. Nothing
leaves the browser unless you explicitly click Send.
LC Mode: fixed a bug where the LC team selector could stay hidden
on first panel open if your session was still bootstrapping when the
panel loaded; the init now retries once after 1.5s before giving up.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.2.5
Veröffentlicht 17. Mai 2026 – 190,28 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.2.5: Reliability fixes.
LC Mode (for Local Chairmen): when one capture strategy fails and falls through to the next, the form filter fields are now cleared between attempts. Previously a stale filter from the failed strategy could narrow the next strategy's search to zero rows. Affects timeslips where the assignment-specific lookup misses and the pool-plus-date fallback is needed.
Diagnostic event reporting: events the extension sends back to its server for admin replay now include the CSRF token and retry on 403, so the admin-side timeline reflects what actually happened during a scrape (previously requests could be silently rejected). Failed scrapes now report their exit reason instead of looking like they never finished.
Same install steps as v2.2.4. Firefox auto-updates via AMO; no action needed.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.2.0
Veröffentlicht 15. Mai 2026 – 181,9 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.2.0 — Local Chairman Mode scraping
When you're a verified Local Chairman with at least one TicketForge LC
team, the scrape widget now shows an LC Mode banner with a team selector
and a member PIN input. Filling both routes that scrape to your team's
shared data instead of your personal Ticket Browser. Before walking
PSTS551, the scraper now fills the EMPLOYEE NO field with the target
member's PIN, so the timeslip query returns that member's tickets via
your own MATN supervisor access.
Non-LC users are unaffected: scrapes continue to land in your personal
Ticket Browser as before.
PSTS17B (Crew Information) capture for the Article 18 REST field is
scaffolded but currently dormant pending verification of the PSTS17A
navigation path.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.53
Veröffentlicht 14. Mai 2026 – 178,73 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherClarified the four scrape-task labels in the popup: "Add Tickets" is now "Add New Tickets" and "Overwrite Tickets" is now "Overwrite All Tickets" (same on the trips-only pair). Same modes, clearer wording. Easier to see at a glance which one is the safe additive run and which one will rewrite existing rows.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.52
Veröffentlicht 3. Mai 2026 – 178,73 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.52 — Settings shortcut.
The login / credentials settings page (PSTS Employee ID, PIN, VPN password) used to be reachable only through right-click on the toolbar icon, or through a gear button in CN's F-key bar. CPKC users had no obvious way to find it.
This version adds two shortcuts to that same settings page:
• A small ⚙ button in the panel header, between the Help button and the minimize button. Visible on both CN and CPKC.
• A "⚙ Settings (login info)" button in the toolbar popup, below "Reset Widget".
No change to what's stored or how it's stored, just easier to find.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.51
Veröffentlicht 3. Mai 2026 – 178,58 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.51 — Small bug fix on top of v2.1.50.
When a scrape finished, the "View ticket browser →" link in the end-of-scrape summary always opened the current calendar year instead of the year you actually scraped. Scrape 2023 and the link would land you on 2026. Now the link carries the scraped year through and opens the right page.
No other behavioral changes from v2.1.50.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.50
Veröffentlicht 3. Mai 2026 – 178,5 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.50 — Overwrite Tickets fix + Reset Year & Scrape
The "Overwrite Tickets" radio now actually overwrites hand-edited rows in the date range. Before, it behaved the same as "Add Tickets" because of a wire-vocabulary mismatch between the panel and the cascade.
New "Reset Year & Scrape" control, available in both CN and CPKC sections. Pick a year, type DELETE in the confirm dialog, and the extension deletes every trip for that year (regardless of source) and re-scrapes the year from the terminal. The dialog shows the live trip count and warns about retention limits (CPKC's CMA typically shows about 13 months back; CN's PSTS retention depends on your account).
Same behavior on CN and CPKC. CPKC cascade also drops the Level 5 cross-source defensive rule (cn_scraper_preserved) since production data showed zero cross-railway scraped overlap.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.49
Veröffentlicht 2. Mai 2026 – 176,36 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.49 — CPKC scraper improvements
What's new for CPKC users:
• New scrape mode selector mirroring the CN side: choose Add Tickets, Overwrite Tickets, Add Trips Only, or Overwrite Trips Only before pressing Start Scrape.
• Cleaner panel: the "Auto-capture on" toggle and the standalone Capture Now button are gone. Captures now happen only during an active Start Scrape session.
Privacy note:
• Screen captures used to flow continuously while a CPKC terminal tab was open. Starting in this version, captures are uploaded only while you have an active Start Scrape running. Nothing is captured before you press Start or after the scrape ends.
CN scraping is unchanged in this release.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.47
Veröffentlicht 1. Mai 2026 – 174,9 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.47 fixes a stuck "Extension updated -- please reload" warning that appeared on v2.1.45 and v2.1.46 and would not clear no matter how many times users reloaded the page or restarted the browser. Reload instructions are now browser-neutral (no more Chrome-only wording on Firefox).
Behind the scenes, the version number is now read once from the manifest instead of being typed by hand into a separate file -- the original cause of the stuck banner. This also fixes telemetry that was reporting older version numbers than users were actually running. No changes to permissions, no changes to data collection, no changes to functionality. Update is recommended.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.46
Veröffentlicht 1. Mai 2026 – 174,59 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherTightened hostname matching for the VPN login helper so saved credentials are only filled on CN's real VPN portals (sra.cn.ca and mfa.cn.ca). Recommended update.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.45
Veröffentlicht 30. Apr. 2026 – 174,26 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.45 — production-readiness pass
Reliability:
• Stop flag now persists, so a stop request is honored even after the
background worker sleeps.
• Resume picks up the manifest, scraped-timeslip set, and trips-only flag
from the persisted checkpoint instead of starting clean.
• Frame-ID is re-discovered at the start of every Phase B iteration so a
stale frame after a tab reload no longer wedges the walk.
• Event buffer is persisted before the upload, then recovered on worker
restart so events buffered during a flaky network are not lost.
• Upload queue capped at 50 entries with FIFO eviction.
• Discovery drain retries each entry up to 3 times instead of breaking
on the first failure.
• Login: cross-tab sync, fresh-token retry on 403, no-races on the
fallback fetch and storage write.
• CMA session-loss detected on three consecutive empty reads or pattern
match, instead of retrying blindly.
• Sub-screen retry budget caps stuck F-keys at one retry then skips.
• Auto-login on CN escalates after two failures and bails after four,
to protect against CATS account lockout.
User-visible:
• Heartbeat warning + Force Stop button if no status arrives in 30 s.
• End-of-scrape summary lists created / refreshed / replaced / skipped /
recovered counts plus a ticket-browser link.
• CMA claim-code labels corrected (HA = Held Away Payment, LM = Lost
Miles, NN = Non-Chargeable Miles Claim, M8 = Chargeable Mile Top-Up,
EC = En-Route Conductor-Only Switching, plus new SH RA GN CC BE AV
CT NR).Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.42
Veröffentlicht 29. Apr. 2026 – 159 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.42 -- CMA scraper resilience.
If a ticket fails on first try, the scraper now backs out to the timeslip list and tries the same row once more before giving up. If it still fails, the scraper walks past it and keeps going instead of bailing the whole scrape. A graduated recovery walks CMA back to a known screen on consecutive failures and only stops the scrape when nothing recovers.
The sub-screen pass now spots CMA's error overlay (PSTS00E) and stops firing F-keys at a wedged terminal. The red-F-key filter no longer falls back to "visit every sub-screen" when CMA tells us no sub-screens have data.
If a ticket upload fails (network blip, server hiccup), the row queues for retry every 5 rows and gets one more drain at the end of the scrape. Eight upload failures in a row stop the scrape with a clear reason.
Adaptive pacing: the scraper eases off when CMA gets flaky and tightens when things go smoothly.
Heartbeat updates every 25 rows so a long scrape shows progress instead of looking frozen. End-of-scrape summary now reads "12 created, 8 refreshed, 4 replaced manual entry, 2 skipped (ambiguous match)" instead of raw status names.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.41
Veröffentlicht 28. Apr. 2026 – 153,46 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherThis release covers everything between 2.1.30 and 2.1.41. The big
theme: the CPKC active scrape button now works end-to-end across
both the 0-4 month timeslip list and the 5-12 month archive list,
including non-working claims like sick leave and personal leave.
CPKC scrape engine
- Walks every page of both the recent and archive timeslip lists,
including non-working claim rows.
- Stops cleanly on either of CMA's two end-of-list signals
("END OF TIMESLIP RECORDS" on the recent list, "NO FURTHER
SCROLLING POSSIBLE" on the archive list) and on a true wrap.
- Distinguishes CMA's F8 page-overlap (the bottom row of one page
reappearing as the top of the next) from a genuine wrap, so the
walk no longer stops after a single ticket on multi-page lists.
- Date ranges older than four months automatically take the
archive path (option 30).
- Recovers cleanly from CMA blank-screen blips, F3 overshoots, and
a few other terminal quirks instead of leaving CMA wedged.
- If the engine cannot tell what screen it is on, it bails with a
clear message instead of pressing keys.
- Handles archive tickets (the option-30 versions of the working
ticket and non-working claim screens) the same way as the
recent versions.
Telemetry
- Sessions now record the browser they ran in (Firefox / Chrome /
Edge) so support can tell where reports are coming from.
- Per-ticket and per-session diagnostic fields brought to parity
with the CN side. Useful only for support; nothing user-visible
changes.
Privacy
- Captures of employee-master and work-history screens are
rejected at upload. The earlier filter let them through if the
page happened to carry a PSTS marker; this release tightens it.
No setting changes are required. Update normally and click Start
Scrape from the timeslip list (or any open ticket).Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.40
Veröffentlicht 28. Apr. 2026 – 152,31 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherQuelltext steht unter der Alle Rechte vorbehalten
Version 2.1.30
Veröffentlicht 27. Apr. 2026 – 147,91 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.28–v2.1.30 — first successful CPKC scrape, plus three follow-up fixes.
CN side is unchanged. For CPKC users:
• A real CPKC user just walked PSTS551 and captured tickets end to end
for the first time. The engine works. These three releases address
the issues that surfaced during that test run.
• v2.1.28 fixes "got stuck partway through the list". CMA repaints the
timeslip list after each ticket capture, and the X-marker positions
shift slightly. The engine was using positions it had read once at
the top of the page, so by the fifth or sixth row the cached
positions no longer matched. The engine now re-reads the screen
before every row instead of caching once per page.
• v2.1.29 adds parser support for non-working claim screens (sick
leave, personal leave, holiday claims). These are a separate CMA
screen called PSTS564 with its own three-column layout. Earlier
versions captured them fine but did not know what fields to extract.
The parser now reads claim code, claim amount and type, claim date
and time, employee number, job type, pay period, cost centre, and
approval status off PSTS564.
• v2.1.30 recovers from F3 overshoot. After capturing a ticket the
engine presses F3 to return to the timeslip list, but on certain
sub-screens F3 can carry too far back, all the way to the main
field-inquiries menu. Earlier versions would then give up. The
engine now checks where it actually landed: if it overshot to the
main menu, it re-runs its own auto-navigation to walk back to the
timeslip list and continues with the next row.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.27
Veröffentlicht 27. Apr. 2026 – 147,14 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.24–v2.1.27 — CPKC scrape engine fixes from real testing.
CN side is unchanged. For CPKC users running the active scraper:
• Fixed a crash that was throwing every Start Scrape attempt with
"Assignment to constant variable". The engine could not run at all
before this fix.
• Fixed a stop-flag carry-over from the extension install that was
silently bailing every scrape on the first iteration with "0
attempted". This was the actual reason scrapes appeared to do
nothing in earlier versions.
• On the main field-inquiries menu, the engine now types option 14
into the SELECTION field by name instead of into the first writable
field on the screen. Previously it was landing in the DISTRICT box.
• The CPKC scrape section in the widget now has Start date and End
date inputs, pre-filled with the first of the current month and
today. The engine fills the START DATE on PSTS551 for you and
presses Enter to refresh the list before walking.
• Non-working tickets (PSTS570) are now recognized as a valid
landing screen. Earlier versions only accepted PSTS562 / PSTS564
and would have bailed on any non-working row.
• When the timeslip list comes up empty, the engine stops with a
clear message about which date range was used instead of walking
zero rows silently.
• Discovery noise filter tightened so the CMA outer web-app wrapper
no longer counts as the terminal frame.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.23
Veröffentlicht 27. Apr. 2026 – 143,89 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.21–v2.1.23 — CPKC scrape engine rebuilt around the CMA inquiry tree.
CN side is unchanged.
For CPKC users:
- The engine now reads the green-screen content from the right place. Earlier versions were reading the terminal wrapper instead of the inner frame, which caused the scraper to think every CMA screen was unknown and exit out.
- The engine knows the full CMA inquiry tree. Reverse-engineered all 25 CMA screens we have data on, mapped how they connect, and taught the engine to navigate that map. Click Start Scrape from anywhere reasonable in CMA (the main field-inquiries menu, the timeslip enquiry, an open ticket, or an assignment history) and the engine walks itself to the timeslip list.
- The widget screen indicator now names every CMA screen by ID and description (e.g. "PSTS562 — Working Ticket", "PSTS17A — Assignment History") instead of falling back to "PSTS_unknown".
- About 3x faster per ticket. The engine reads the color of each ticket's F-key labels and skips the empty sub-screens, only visiting the ones that have data.
- CMA-specific failure cases are handled cleanly. If CMA throws its own error screen, the message is passed through to you. If your CMA session has timed out, you are told to sign back in.
- The CN-only PSTS PIN / VPN password block is hidden in the widget on CPKC tabs (CPKC users do not need it; F5 SSO covers them).Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.19
Veröffentlicht 26. Apr. 2026 – 136,38 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.19 — CPKC discovery improvements
• Discovery only runs while you are on the CMA terminal. If you navigate
to another internal site (careers, SAP, SSO, etc.) the extension stops
capturing until you return to CMA.
• The "Stage 2" diagnostic button now reports a useful result. Added a
new "Stage 3: full recipe" button that runs the same sequence the
scraper itself uses, so it tells us up front whether Start Scrape will
work for you.
• Trip de-duplication is tighter. The same job (same train ID, same
date) is now treated as one trip even if two captures of the supervisor
screen disagree on the time format.
• No CN changes. CN scraping is byte-identical to v2.1.18.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.18
Veröffentlicht 26. Apr. 2026 – 131,96 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.18
CPKC parser correctness. CMA captures now use RUN MILES (the figure
the user is paid on) instead of ACT MLS RUN (a separate auto-computed
"actual miles run" line that on turn trips includes locomotive and
deadhead extras and reads higher). Same correction applied to total
miles and constructive miles, taking the EMPLOYEE column instead of
the SYSTEM column. The CPKC scraper parser is now standalone, mirroring
how CN's scraper parser is separate from CN's QuickFill paste parser.
QuickFill paste path is unchanged. CN scraping is unchanged. No
user-visible UI shift.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.17
Veröffentlicht 26. Apr. 2026 – 131,96 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.17
CPKC-only diagnostic addition. The "Start Scrape" session summary the
extension already uploads to TicketForge at the end of every scrape now
includes a snapshot of the timeslip-list page's input-field structure,
so the admin can confirm or fix the row-walking heuristic from real
data. No user-visible behaviour change. CN scraping is unchanged.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.16
Veröffentlicht 26. Apr. 2026 – 131,55 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.16
CPKC-only internal change: rewrote the keystroke layer that drives the
CPKC CMA terminal during one-click "Start Scrape". Now uses Inventu
Viewer's own SendAid + SCSetField primitives directly (the same path
their macro player uses) instead of synthesizing keyboard events.
Fixes three bugs in the previous build that were preventing the row
walker on the timeslip-list page from firing. CN scraping is unchanged.
No user-visible UI change.Quelltext steht unter der Alle Rechte vorbehalten
Version 2.1.15
Veröffentlicht 25. Apr. 2026 – 130,86 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.15- Internal telemetry: the CPKC scrape engine now reports a session
summary at the end of every Start Scrape run. Lets us see when a
scrape attempt fails on the user's machine before any tickets are
uploaded (e.g. terminal not loaded, wrong screen, blocked
keyboard event) so we can fix it without asking the user to
reproduce. - No user-visible behaviour change. The Start Scrape button, auto-
add trips, and CN scraping all behave exactly as in v2.1.14.
Quelltext steht unter der Alle Rechte vorbehalten
- Internal telemetry: the CPKC scrape engine now reports a session
Version 2.1.14
Veröffentlicht 25. Apr. 2026 – 130,42 KBFunktioniert mit firefox 140.0 und höher, android 142.0 und höherv2.1.14- New "Start Scrape" button on the CPKC discovery panel. Mirrors the
CN flow: navigate to the CMA timeslip list (PSTS551), click Start
Scrape, and the extension walks the list, opens each ticket,
captures the main screen plus sub-screens (F4/F6/F7/F9/F11/F12),
and ships them to TicketForge. Existing trips are never overwritten. - The active scrape is gated server-side by an admin flag
(CPKC_SCRAPE_ENGINE_ENABLED). When the flag is on, scraped tickets
become trips with source=cpkc_experimental. When the flag is off,
the engine still runs but the server records the captures for
parser tuning without creating trips. - The previous "Help us build automation" developer probe section is
still present for diagnostic purposes; both probes and the new
Start Scrape exercise the same keystroke layer underneath. - No CN scrape behavior changes.
Implementation note: the scrape engine drives the Inventu Viewer
(FVTerm) terminal by dispatching synthetic KeyboardEvents on the
em.scrElem element through chrome.scripting.executeScript with
world:'MAIN'. This is the standard FVTerm event entry point — the
same one a user's physical keyboard goes through.Quelltext steht unter der Alle Rechte vorbehalten
- New "Start Scrape" button on the CPKC discovery panel. Mirrors the