Skip to content

Releases: malinfossum/hugin

v3.3.0 — focus filters

Choose a tag to compare

@malinfossum malinfossum released this 28 Aug 19:45
983a894

Everything since v3.0.0 — the v3.1 polish wave, the v3.2 feedback wave, the Hugin brand pack, and v3.3:

Focus (new in v3.3). On first launch Hugin asks what you want to follow — a fylke and ad categories. The choice persists in your browser, filters the dashboard and the company list everywhere at once, and is editable any time (Companies filters write back; Settings has a Fokus section with reset). Ads you track always bypass the filter, so a tracked deadline can never disappear.

Companies. Fylke → kommune cascading filter (2024 fylke set, derived from kommune numbers). Count line counts what you actually see.

Polish. Correct singular forms (1 dag / 1 day); dashboard cards surface load failures with retry instead of vanishing; Settings announces its changes to screen readers; star-toggle and export race conditions closed; API returns 400/404 instead of 500 on malformed reorder and update/delete races.

Brand + a11y. Hugin brand pack v1.0.0 (raven marks, full favicon/PWA set, banner/social); brand typography pinned to bundled font faces (no more blurry buttons); design system at 3.2.0 — form controls get a dedicated boundary token meeting WCAG 1.4.11.

Downloads. hugin-v3.3.0-win-x64.zip = CLI + dashboard exes (needs the .NET 10 runtime). hugin-v3.3.0-win-x64-single.zip = one self-contained Hugin.exe, no install. Both ship hugin.json.example — copy it to hugin.json beside the exe and start.

v3.0.0

Choose a tag to compare

@malinfossum malinfossum released this 24 Aug 10:52
370539a

Hugin v3.0.0 — the standalone release. Everything since v2.0.1: the v3 pivot plus the v3.1 polish wave.

Highlights

  • Single-file distribution: Hugin.exe is now one self-contained file — no .NET runtime install, the dashboard's frontend is embedded. Double-click and the browser opens on localhost.
  • Simpler tracking model: statuses are now active → applied → answered plus an independent ⭐ star. Existing databases migrate automatically (a .bak backup is written first).
  • Track from the dashboard: untracked companies get a Track button directly on their deadline rows.
  • Export, reworked: extract replaces export's old fixed shape — md/txt/json × new/category/all, and including active entries is now an opt-in (--include-active on the CLI, a checkbox in the dashboard).
  • Bilingual UI: full Norwegian/English dashboard with one segmented NO/EN switch, plus a dark/light theme toggle (dark default).

Dashboard

  • Fixed: the "Mark as seen" confirm dialog no longer renders permanently inline — it appears only when asked.
  • One date format everywhere: dd.MM.yyyy, in both languages.
  • Sources row in the header: Brønnøysundregisteret, NAV, FINN, LinkedIn — short labels, your configured links.
  • Deadline rows align date, days-left, and category in clean columns.
  • Company names display in Title Case (legal forms like AS/ASA/HF stay uppercase); raw register names are untouched in the database and exports.
  • Companies group hovedenhet + avdelinger into one expandable row, with filters for kommune, search, and "has own website" — and links sit on the row itself.
  • Views keep their state while you move around the app (filters, open detail, scroll); everything resets on restart.

Data & discovery

  • Websites from job ads: when the register has no (or a dead) website for an employer, Hugin adopts the one from the NAV ad detail and verifies it with the existing link checker. A healthy register website always wins.
  • Discovery scales: hugin.json now takes fylker (two-digit county codes) and allOfNorway alongside municipalities — Brreg queries are chunked per fylke, and NAV ads resolve municipalities through the full kommune register.
  • Dead links are still never rendered; every company always offers a working link (verified site, or Google/Proff.no search).

CLI & API

  • hugin.exe works fully standalone: sync, new, track, export, list.
  • The localhost API doubles as a machine interface for your own tooling — endpoint table in the README. Loopback-only; writes require the X-Hugin: 1 header (CSRF protection, not authentication).

Assets

  • hugin-v3.0.0-win-x64.ziphugin.exe (CLI) + hugin-api.exe (dashboard host) + frontend; requires the .NET 10 runtime.
  • hugin-v3.0.0-win-x64-single.zip — the self-contained single-file Hugin.exe; no runtime needed.

Both share a hugin.json beside the exe (see hugin.json.example); the database is created next to it on first sync.

v2.0.1 — one double-click

Choose a tag to compare

@malinfossum malinfossum released this 20 Aug 11:47

Getting started is now a single action: run hugin-api.exe and the dashboard opens in your default browser by itself. Closing the console window stops Hugin. --no-browser skips the launch for scripted use.

Install

Unzip anywhere, put a hugin.json beside the executables (start from the bundled hugin.json.example), double-click hugin-api.exe. Requires the .NET 10 runtime. Existing databases upgrade automatically. The CLI (hugin.exe) is unchanged.

v2.0.0 — the web dashboard

Choose a tag to compare

@malinfossum malinfossum released this 20 Aug 09:28
360da81

Hugin grows a face: a localhost web dashboard as a full daily driver over the same config and database as the CLI, which keeps working unchanged. (v1, the initial CLI, predates tagged releases.)

Highlights

  • Deadline-first dashboard — active ads sorted by days-until-frist with urgency colors, a "Trenger handling" callout for tracked-but-not-applied ads closing within a week, and "Nytt siden sist" mirroring hugin new.
  • Full daily routine in the browser — auto-sync on launch plus a sync button, pipeline tracking with inline editing, ad dismissal (Skjul/Vis skjulte), company browser with per-company ad history, and the Preparelogg markdown export with copy-to-clipboard.
  • Local-only security model — loopback-only binding, a Host-header allowlist, and a custom write header, so neither other machines nor websites in your browser can reach the API.
  • Smarter pipeline matching — ads match tracked companies through the registry's parent chain, and sync enriches unknown ad-employer units from Brreg so the chain resolves.
  • Architecture refactor: shared Hugin.Infrastructure (EF Core + SQLite, HTTP clients, config) under two thin hosts, Hugin.Console and Hugin.Api, with a React + TypeScript frontend in hugin-web. 205 tests (152 NUnit + 53 Vitest).

Install

Unzip, put a hugin.json beside the executables (start from the bundled hugin.json.example), then run hugin-api.exe and open http://localhost:5111 — or use hugin.exe for the CLI. Requires the .NET 10 runtime. Existing databases upgrade automatically.