Skip to content

Scheduled links

Scheduled links let a stable slug point somewhere different during configured time windows. Keep the normal link in v8s-links.txt, then add rules in v8s-schedules.json.

Schedules currently apply to exact links. Splat links stay path-driven.

For common schedule changes, use the Node CLI instead of hand-editing JSON:

./scripts/lnk schedule add hangout https://zoom.us/j/work --label work --days mon,tue,wed,thu,fri --from 09:00 --to 17:00 --timezone America/Toronto --default https://discord.gg/personal
./scripts/lnk schedule list hangout

The CLI writes custom/v8s-schedules.json by default. Set V8S_SCHEDULES_FILE or pass --file to use another path.

Use schedule default only after the slug already has at least one rule. A schedule with a default target but no active rule is invalid at build time.

Compact form

{
  "hangout": {
    "timezone": "America/Toronto",
    "9to5": "https://zoom.us/j/work",
    "default": "https://discord.gg/personal"
  }
}

Full form

{
  "hangout": {
    "rules": [
      {
        "label": "work",
        "timezone": "America/Toronto",
        "days": ["mon", "tue", "wed", "thu", "fri"],
        "from": "09:00",
        "to": "17:00",
        "target": "https://zoom.us/j/work"
      }
    ]
  }
}

Rules are checked in order. The first active rule wins. If no rule matches, the Worker uses the normal target from v8s-links.txt, or the schedule default target when provided.

Time windows are inclusive at from and exclusive at to. Overnight windows are supported.

You only need to edit v8s-schedules.json manually for advanced reshaping, bulk edits, or code review changes that are easier to express directly in JSON.

Edit this page Last modified: