Skip to content

Releases: tina4stack/tina4pascal

Tina4Pascal v1.1.1

Choose a tag to compare

@github-actions github-actions released this 08 Sep 19:55

Tina4Pascal v1.1.1

Windows — now signed & branded

  • tina4-htmlviewer-win64.exe is Authenticode code-signed with the Code Infinity (Pty) Ltd EV certificate (Certum SimplySign), SHA-256, RFC3161-timestamped — no more SmartScreen "unknown publisher".
  • The exe now carries the Tina4 app icon (Explorer, title bar, taskbar, Alt-Tab). It was silently dropped before because the cross-toolchain has no windres; the build embeds a precompiled .res via fpcres instead.
  • tina4pascal.ps1 updated to match (fpcres icon step; doctor checks fpcres).

CSS engine

  • ::before / ::after generated content
  • text-decoration style + colour — wavy / dotted / dashed / double
  • background-clip: text (gradient-filled glyphs)
  • vertical writing-mode (vertical-rl / lr / sideways)
  • conic & repeating gradients, multi-position stops, flex aspect-ratio, mitered trapezoid borders

Compliance 139/139; test_dom 132 assertions.

Verify

Every asset has a SHA-256 and a GPG detached signature (.asc) — import tina4pascal-release-public.asc, then gpg --verify <asset>.asc <asset>. The Windows exe additionally verifies via its embedded Authenticode signature on Windows.

macOS and Linux binaries are fresh CI builds from the v1.1.1 source (they include the CSS features above).

Tina4Pascal v1.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 15:20

Full Changelog: v1.0.3...v1.1.0

Tina4Pascal v1.0.3

Choose a tag to compare

@github-actions github-actions released this 07 Sep 07:22

Tina4Pascal v1.0.3

Maintenance release — release tooling + clean-box robustness.

Changes

  • macOS notarizationrelease-macos.sh now Developer-ID-codesigns the
    macOS binary (hardened runtime, timestamped) and notarizes it when a notary
    credential is configured, so downloads open without a Gatekeeper warning.
  • Windows clean-box installer hardened — the CLI's one-time FPC auto-install
    sends a browser User-Agent, tries a direct mirror, and validates the download
    is a real PE installer
    (MZ header + full size) before running it — a
    partial/HTML response now fails cleanly instead of executing a corrupt file.
  • CI — the Windows job installs FPC via the Lazarus setup action (reliable),
    no longer gated on SourceForge rate-limiting runners. Linux + macOS + Windows
    all green.

No API or rendering changes since v1.0.2 (bundled fonts on all platforms, WebP,
HTML→PDF, etc. carry over).

Assets & verification

Windows deliverables are Authenticode-signed (Certum EV, Code Infinity (Pty) Ltd);
Linux + macOS tarballs are GPG-signed with the release key
(tina4pascal-release-public.asc, fp E0B36CDD76676DD08E4F1FA641DA6E7645F494AF).
Each asset ships a .sha256.

gpg --import tina4pascal-release-public.asc && gpg --verify <asset>.asc <asset>
Get-AuthenticodeSignature tina4pascal.ps1        # Windows: Status = Valid

macOS Gatekeeper (if not notarized on your build)

gpg --verify tina4-htmlviewer-macos-arm64.tar.gz.asc tina4-htmlviewer-macos-arm64.tar.gz
tar xzf tina4-htmlviewer-macos-arm64.tar.gz
xattr -dr com.apple.quarantine tina4-htmlviewer-macos-arm64

Tina4Pascal v1.0.2

Choose a tag to compare

@github-actions github-actions released this 06 Sep 21:44

Tina4Pascal v1.0.2

Headline: bundle your app's fonts and render identically on every platform.

Bundled fonts — all 5 platforms

Drop .ttf files in a project's fonts/ folder and tina4pascal build
ships them with the app; the renderer registers them with the OS text engine and
resolves fonts bundled-first — the generic CSS families (sans-serif /
serif / monospace) are backed by the bundled DejaVu family when present,
otherwise the platform's system font. An explicit font-family resolves to any
bundled font of that name. Empty fonts/ → system fonts (unchanged behaviour).

Platform Mechanism Verified
Linux FreeType, fonts/ beside the exe
Windows GDI AddFontResourceExW (private) ✅ DejaVu vs Segoe UI
macOS CoreText CTFontManagerRegisterFontsForURL ✅ DejaVu vs San Francisco
Android Typeface.createFromFile from APK assets/fonts/ ✅ on emulator
iOS CoreText graphics-font registration compiles; device build pending

tina4pascal init now scaffolds the fonts/ folder (with a README), and the
build copies it next to the executable / into the app bundle / into the APK.

Also

  • iOS: deploy ios fixed (a mangled $udid under set -u) and
    CFBundleIdentifier parameterised so device builds sign + install.
  • macOS: downloads are GPG-signed, not Apple-notarized — if Gatekeeper warns,
    verify then xattr -dr com.apple.quarantine <binary> (documented in the notes).

Assets & verification

Windows deliverables are Authenticode-signed (Certum EV, Code Infinity (Pty) Ltd);
Linux + macOS tarballs are GPG-signed with the release key
(tina4pascal-release-public.asc, fp E0B36CDD76676DD08E4F1FA641DA6E7645F494AF).
Each asset ships a .sha256.

gpg --import tina4pascal-release-public.asc && gpg --verify <asset>.asc <asset>
Get-AuthenticodeSignature tina4pascal.ps1        # Windows: Status = Valid

macOS Gatekeeper (un-notarized)

gpg --verify tina4-htmlviewer-macos-arm64.tar.gz.asc tina4-htmlviewer-macos-arm64.tar.gz
tar xzf tina4-htmlviewer-macos-arm64.tar.gz
xattr -dr com.apple.quarantine tina4-htmlviewer-macos-arm64

Tina4Pascal v1.0.1

Choose a tag to compare

@github-actions github-actions released this 06 Sep 20:36

Tina4Pascal v1.0.1

Maintenance + feature release on top of v1.0.0.

New

  • WebP images — pure-Pascal decoder: VP8L (lossless), lossy VP8, and lossy+ALPH alpha, wired into the image pipeline. Full WebP support, no external libraries.
  • HTML → PDF — a headless Tina4CanvasPdf renders the same layout to a PDF (--pdf), FlateDecode-compressed with embedded images and text.
  • DrawRGBA on every shell (Windows/Cocoa/Linux) — on-screen WebP and faster Lottie.
  • Linux text is now FreeType — scalable, Unicode, anti-aliased. The old X11 core-font path only reached 8-bit iso8859-1, so glyphs like , , , rendered as tofu; they now render correctly and text is crisp. libfreetype is loaded by soname at runtime (no dev symlink, no link-time dependency).
  • Bundled fonts — the Linux shell resolves a fonts/ directory beside the executable first, then system fonts, so an app can ship its own fonts and render identically everywhere (including minimal containers).

Fixed

  • Inline margin-right was dropped in the layout engine — inline-block elements with margin-right rendered flush against the next box (e.g. a horizontal strip of chips touched instead of sitting apart). Now honoured for inline-block, <img>, form controls and <svg>. Shared engine, so every backend benefits.

Tests / CI

  • New webp and pdf suites wired into tina4pascal test (12 suites total). The pdf suite inflates the content stream and asserts the emitted operators.
  • Cross-OS CI matrix (Linux/macOS/Windows) builds and tests on every push; tagging a release builds and attaches the Linux + macOS artifacts automatically.

Assets & verification

Windows deliverables are Authenticode-signed (Certum EV, Code Infinity (Pty) Ltd); the Linux tarball is GPG-signed with the release key (tina4pascal-release-public.asc, fingerprint E0B36CDD76676DD08E4F1FA641DA6E7645F494AF). Each asset ships a .sha256.

gpg --import tina4pascal-release-public.asc && gpg --verify <asset>.asc <asset>
Get-AuthenticodeSignature tina4pascal.ps1     # Windows: Status = Valid

macOS — if you see a Gatekeeper warning

The macOS build is a GPG-signed binary (not an Apple-notarized .app). If you download it with a browser, macOS may quarantine it and warn that it "cannot be checked for malware." Clear the quarantine flag after verifying the signature:

gpg --verify tina4-htmlviewer-macos-arm64.tar.gz.asc tina4-htmlviewer-macos-arm64.tar.gz
tar xzf tina4-htmlviewer-macos-arm64.tar.gz
xattr -dr com.apple.quarantine tina4-htmlviewer-macos-arm64
./tina4-htmlviewer-macos-arm64 page.html

Tina4Pascal v1.0.0

Choose a tag to compare

@andrevanzuydam andrevanzuydam released this 06 Sep 18:33

Tina4Pascal v1.0.0 — first release

Tina4Pascal is the Free Pascal sibling of Tina4Delphi: an HTML/CSS-driven, native UI engine. You write templates (Frond/HTML + CSS) and the engine paints them with the OS's own graphics — no browser, no web view — into a small, single native binary per target (Windows GDI+, Linux X11, Android JNI, macOS Cocoa, iOS).

Highlights

  • Native rendering of HTML/CSS — shapes, AA rounded rects, rgba/box-shadow alpha, linear/radial gradients, images (data:/http/file), plus things a browser can't do natively (QR, Lottie, SVG).
  • One project, many targetstina4 init scaffolds an app that builds for Windows, Linux, and Android from a single Windows box (macOS/iOS from a Mac).
  • Zero-setup desktop start — the CLI auto-installs Free Pascal on first init/build/run.
  • AI-drivable — a Streamable-HTTP MCP server (tools/mcp) exposes 21 dev tools (build/run/render/inspect/debug/script/deploy) so an agent can drive the whole loop.
  • Windows compliance — 130/130 of the bundled W3C-style reftests pass.

What landed in 1.0.0

Clean-box + Windows-portability fixes so a newcomer (and an AI) can actually get running:

  • CLI: new/dev aliases, FPC auto-install on build/run/render/debug, dashless norun.
  • MCP server: now works on Windows (drives the PowerShell CLI, portable host target, app.py entry point, mounted endpoint). Verified end-to-end: initialize + tools/list = 21 tools; tools/call tina4_doctor returns OK.

Assets (all Authenticode-signed, Certum EV — Code Infinity (Pty) Ltd — and timestamped)

File What it is
tina4pascal.ps1 the Windows developer CLI (doctor/init/build/run/render/debug/script/…)
tina4-htmlviewer-win64.exe standalone HTML viewer — tina4-htmlviewer-win64.exe <page.html> (or --snapshot out.png)
tina4-fpc-android-cross-3.2.2-win64.zip FPC→Android cross-compilers (arm64/armv7/x86_64) for building APKs from Windows; the .exe inside are signed

Each asset ships with a .sha256 sidecar.

Verify

# checksum
Get-FileHash tina4pascal.ps1 -Algorithm SHA256
# signature (should say Valid, signed by Code Infinity (Pty) Ltd)
Get-AuthenticodeSignature tina4pascal.ps1 | Format-List Status, SignerCertificate

Quickstart

# clone the repo, then from its root:
tools\tina4pascal.ps1 doctor        # checks/install the toolchain
tools\tina4pascal.ps1 init hello    # scaffold + build + launch a native app

The Android cross-pack .ppu/.o are FPC-version-stamped and are not committed to git — this signed pack is how you get them for FPC 3.2.2 without rebuilding the cross-compiler yourself. Unzip it into your FPC 3.2.2 tree (see docs/ANDROID.md).