# Changelog of JORADP Scraper (joradp.dz) (`hamza325/joradp-scraper`) Actor

- **URL**: https://apify.com/hamza325/joradp-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/hamza325/joradp-scraper.md

## Changelog

All notable changes to the JORADP Actor.

### 0.3.1 — 2026-11-02

- **A failed run names its cause.** When every job fails, the exit status now
  carries the first failure (`Unknown nature "…"`, `bulk mode needs …`) instead
  of "1 job(s) failed; see the warnings above" — the log held the reason, but
  the status message is what a user of the published Actor sees.

### 0.3.0 — 2026-11-01

- **The year window is required in bulk and issues modes.** `yearFrom` and
  `yearTo` no longer default to the current year: a default quietly returned
  one year's slice when the caller meant the archive. Search mode filters by
  date and ignores both fields, so it is not forced to supply them.

### 0.2.0 — 2026-11-01

- **One edition per run.** `languages` (an array) is replaced by `language`
  (`"ar"` or `"fr"`, default Arabic). The two editions are separate
  publications; collecting both now means two runs, each with its own dataset.
- **Keywords are written, not encoded.** The `keywords` field takes a phrase as
  a person writes it (`أمانة عامة للحكومة`); a `+` typed between words is
  folded into a space, because the site's `+` form returns nothing.
- **`matchMode` removed.** The site's all-words/any-word switch made no
  measurable difference on phrase queries (`دولة محروقات` returned 0 in both),
  so exposing it only promised a control that does nothing.

### 0.1.0 — 2026-11-01

First release.

- **Three modes.** `search` (filters → matching legal texts with their relation
  tree), `bulk` (the whole archive, one query per year), `issues` (the
  publication calendar with the PDF of every issue).
- **Both portals.** Arabic (`windows-1256`) and French (`windows-1252`), each
  with its own index, numbering and PDFs.
- **Relation tree.** Texts that repeal, amend, implement, approve or rectify a
  match are emitted as rows with `depth`, `relation`, `relationLabel` and
  `parentTextId`; unknown labels still open a level, as `relation: "other"`.
- **Links, no binaries.** `pageUrl` (the issue PDF with a `#page=` anchor from
  1994 on, the single-page PDF before), `issuePdfUrl`, `issueIndexUrl`.
- **Runtime taxonomies.** Sector, ministry and nature filters are resolved
  against the lists the site publishes, and posted byte-exactly.
- **Honest dates.** `signatureDateIso` / `jo.dateIso` are `null` when the month
  is Hijri or unrecognised, instead of a guessedGregorian date.
