Skip to content

sync - #345

Merged
jlunder00 merged 15 commits into
devfrom
main
May 10, 2026
Merged

sync#345
jlunder00 merged 15 commits into
devfrom
main

Conversation

@jlunder00

Copy link
Copy Markdown
Owner

No description provided.

jlunder00 added 15 commits May 9, 2026 12:40
…loys

Adds a manual trigger with an environment selector (prod / dev / both).
On workflow_dispatch, prod job always checks out main; dev job always
checks out dev — regardless of which branch the dispatch was triggered from.

Useful for forcing a redeploy after Fly secrets change or when a push
skipped the path filter.
fix(ci): add workflow_dispatch for manual force deploys
… endpoint

- Dockerfile: inject TETHER_VERSION=dev ARG+ENV so all services can
  read the deployed tag at runtime
- fly-deploy.yml: auto-bump patch from latest vX.Y.Z git tag on each
  prod deploy; push new tag after success. Dev builds use same base
  version with -dev.{sha7} suffix, no tag pushed. fetch-depth: 0
  required so git tag -l sees all existing tags.
- api/main.py: add unauthenticated GET /api/version endpoint
- pyproject.toml: reset version to 0.0.0 (start of proper semver)
- Dockerfile: TETHER_VERSION ARG+ENV baked into image at build time
- fly-deploy.yml: read TETHER_VERSION from pyproject.toml at deploy time;
  dev builds append -dev.{sha7} suffix
- api/main.py: GET /api/version returns tether + premium versions
- scripts/release.sh: CLI release script (--patch/--minor/--major/--alpha)
- .github/workflows/release.yml: on tag push, create GitHub Release
feat(infra): add release versioning system
…#338)

- DayTimeline: use fetchPlanRange(date, date) instead of fetchPlan after
  promoting a task to calendar. fetchPlan flips loading=true which causes
  PlanView's v-if="planStore.loading" to destroy and remount the entire
  plan grid — fixing the full-page flash (Bug 1) and between-anchor DnD
  appearing broken (Bug 3) simultaneously.

- DayTimeline: replace local-naive ISO string construction with
  Date + setHours + toISOString() in handleSlotDrop. Local-naive strings
  like "2026-05-09T14:00:00" are treated as UTC by the backend, placing
  promoted events 7h early in PDT. Both the new-promotion path and the
  existing-event-move path are fixed (Bug 2).

- DayTimeline: guard slotIndexFromClientY against non-finite clientY to
  prevent NaN propagation into Date construction (hardening).

- CalendarView: add draggingTaskId ref + v-show + requestAnimationFrame
  deferral to sidebar task <li> elements. Mirrors AnchorBlock.vue pattern
  so the source task hides after the browser snapshots the drag ghost
  image, eliminating the source-flicker after drop (Bug 5).

Tests: 14 DayTimeline DnD tests pass (3 new regression tests for UTC
times and fetchPlanRange behavior, existing tests updated to use
timezone-safe UTC assertions). Full suite: 591/591 passing.
* feat(infra): pin tether-premium via pypi index requirements files

- requirements-premium.txt: prod pin (0.0.1 stable)
- requirements-premium-dev.txt: dev pin (0.0.1a1 alpha)
- Dockerfile: install premium from PREMIUM_REQUIREMENTS file via
  tether-pypi index; git credential config scoped to the RUN layer
- fly-deploy.yml: dev deploy passes PREMIUM_REQUIREMENTS override;
  add requirements-premium*.txt to trigger paths

* feat(infra): add update-premium-pin workflow for automated pin PRs
- DayTimeline: use fetchPlanRange(date, date) instead of fetchPlan after
  promoting a task to calendar. fetchPlan flips loading=true which causes
  PlanView's v-if="planStore.loading" to destroy and remount the entire
  plan grid — fixing the full-page flash (Bug 1) and between-anchor DnD
  appearing broken (Bug 3) simultaneously.

- DayTimeline: replace local-naive ISO string construction with
  Date + setHours + toISOString() in handleSlotDrop. Local-naive strings
  like "2026-05-09T14:00:00" are treated as UTC by the backend, placing
  promoted events 7h early in PDT. Both the new-promotion path and the
  existing-event-move path are fixed (Bug 2).

- DayTimeline: guard slotIndexFromClientY against non-finite clientY to
  prevent NaN propagation into Date construction (hardening).

- CalendarView: add draggingTaskId ref + v-show + requestAnimationFrame
  deferral to sidebar task <li> elements. Mirrors AnchorBlock.vue pattern
  so the source task hides after the browser snapshots the drag ghost
  image, eliminating the source-flicker after drop (Bug 5).

Tests: 14 DayTimeline DnD tests pass (3 new regression tests for UTC
times and fetchPlanRange behavior, existing tests updated to use
timezone-safe UTC assertions). Full suite: 591/591 passing.
… errors

The inline @dragstart handler in CalendarView.vue's sidebar used
requestAnimationFrame (not a component method) and draggingTaskId.value
(.value doesn't exist on the template-unwrapped string | null type),
causing three vue-tsc errors in the Docker build.

Extract to onSidebarTaskDragStart() in script setup where draggingTaskId
is correctly typed as Ref<string | null> and requestAnimationFrame is
available as a global. Template now calls the function with the task,
anchor id, and focusedDay as arguments.
…343)

Multiline Python embedded in a YAML literal block causes GitHub's
workflow parser to error -- lines at column-0 inside the $() subshell
fall outside the block's indentation level. Replace both version-read
steps with a single awk one-liner that is safe in any YAML parser.
* fix(infra): replace multiline python3 -c with awk in fly-deploy.yml

Multiline Python embedded in a YAML literal block causes GitHub's
workflow parser to error -- lines at column-0 inside the $() subshell
fall outside the block's indentation level. Replace both version-read
steps with a single awk one-liner that is safe in any YAML parser.

* fix(infra): correct extra-index-url — drop /simple/ suffix

The astariul/github-hosted-pypi template serves the package index from
the repo root, not a /simple/ subdirectory. pip was getting 404 on every
version lookup, reporting "from versions: none".
fix(frontend): fix 4 DnD bugs + CalendarView sidebar TS errors
@jlunder00
jlunder00 merged commit c4201ac into dev May 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant