Skip to content

Releases: arkstack-hq/arkstack

0.17.19

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 13 Aug 09:01
8e07ddc

What's Changed

  • fix: keep dev tunnel stable across restarts by @3m1n3nc3 in #4

Full Changelog: 0.17.18...0.17.19

0.17.18

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 13 Aug 05:21

What's Changed

  • feat: add ngrok support for tunneling in DevCommand and update environment variables

Full Changelog: 0.17.17...0.17.18

0.17.17

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 03 Aug 10:21

What's Changed

  • feat: upgrade musket and improve CLI teardown using new musket cli lifecycle features.
  • fix(driver-express): requestLogger does not compute the accurate request duration as it doesn't run the logger within the finish event listener.

Full Changelog: 0.17.15...0.17.17

0.17.15

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 30 Jul 23:32

What's Changed

  • fix(notifications): registerAuthRoute did not implement any validation logic

Full Changelog: 0.17.14...0.17.15

0.17.14

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 30 Jul 22:55
20c78e4

What's Changed

  • feat: (notifications): add static registerAuthRoute method. by @3m1n3nc3 in #3

Full Changelog: 0.17.13...0.17.14

0.17.13

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 30 Jul 22:37
8a9652e

What's Changed

  • feat(notification): add auth and registerAuthRoute methods for Pusher realtime driver by @3m1n3nc3 in #2
  • feat(realtime): add the apiUrl config property by @3m1n3nc3 in #2

Full Changelog: 0.17.12...0.17.13

0.17.12

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 26 Jul 01:59

What's Changed

  • fix(notifications): this.fromAddress is undefined for custom transports as it is only constructed after custom transport is initialized.

Full Changelog: 0.17.9...0.17.12

0.17.9

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 25 Jul 10:29
3643077

What's Changed

  • feat(notifications): add support for custom realtime and mail notifications transport, and improve driver type safety and context awareness. by @3m1n3nc3 in #1

Full Changelog: 0.17.3...0.17.9

0.17.3

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 14 Jul 03:26

Added

  • Added request-scoped Clear Router bindings for Arkstack Request, Response, and Session.
  • Added automatic arkstackHttpPlugin registration for Express and H3.
  • Added unified clearRequest and clearResponse values to the route context.
  • Added automatic decorator setup, allowing controller arguments using @Bind() to resolve without extra container configuration.

Improved

  • Made request(), response(), and session() resolve from the active request scope.
  • Preserved request body, query, params, route, context, and original request data when adapting framework requests.
  • Ensured repeated dependency resolution returns the same HTTP instances throughout a request.
  • Added isolation for concurrent requests to prevent global helpers from returning stale instances.

Fixed

  • Fixed database queue eligibility checks by comparing available_at against the database timestamp.
  • Fixed request, response, and session helpers leaking state between concurrent requests.

Dependencies

  • Updated clear-router to 2.9.2.
  • Updated @arkormx/plugin-clear-router to 0.1.54.
  • Updated @resora/plugin-clear-router to 1.0.68.

Documentation

  • Restored the missing Arkstack changelog history from 0.4.1 through 0.17.2.

Full Changelog: 0.17.0...0.17.3

0.17.0

Choose a tag to compare

@3m1n3nc3 3m1n3nc3 released this 09 Jul 06:12

Arkstack Release Notes

Task Scheduling (new: @arkstack/scheduler)

Define scheduled tasks fluently in code instead of managing a crowd of cron entries - a single per-minute cron entry drives everything.

Define your schedule in src/routes/console.ts:

import { Schedule } from '@arkstack/scheduler'

Schedule.command('cache:prune').hourly()
Schedule.call(() => prune()).dailyAt('01:30').withoutOverlapping()
Schedule.job(new SendDigest()).weeklyOn(1, '08:00')
Schedule.exec('backup.sh').daily().onOneServer()

Task types

  • Schedule.command(name, args?) - run an Arkstack CLI command (ark )
  • Schedule.call(fn) - run a callback
  • Schedule.job(job) - dispatch a queued job (via @arkstack/jobs)
  • Schedule.exec(cmd, args?) - run a shell command

Frequencies

everyMinute / everyTwoMinutes ... everyThirtyMinutes, hourly, hourlyAt, daily, dailyAt, twiceDaily, weekly, weeklyOn, monthly, monthlyOn, quarterly, yearly, cron('...'), plus day constraints (weekdays, weekends, mondays...sundays, days([...])) and timezone(tz).

Constraints

when(fn), skip(fn), environments(...envs), between('09:00','17:00'), unlessBetween(...) - overnight windows handled.

Overlaps, single-server & background

  • withoutOverlapping() - skip if the previous run is still going
  • onOneServer() - run on only one server per due minute
  • runInBackground() - don't let a long task delay others

Locks coordinate through @arkstack/cache (configure a shared store like redis/database for onOneServer to be effective); without a cache they fall back to a process-local lock.

Hooks

before(), after(), onSuccess(), onFailure(error).

Running

Add one system cron entry that runs every minute:

* * * * * cd /path/to/app && npx ark schedule:run >> /dev/null 2>&1

Development / inspection:

ark schedule:work    # evaluate the schedule every minute in the foreground
ark schedule:list    # list tasks with their next run time

Notes

  • Cron evaluation powered by croner (minute-resolution, timezone-aware).
  • Schedules are defined in src/routes/console.ts (loaded via jiti - no build needed).
  • @arkstack/cache and @arkstack/jobs are optional peers.
  • Included in the app templates and create-arkstack; guide, API reference, and README added.

Full Changelog: 0.16.11...0.17.0