0119343b0 |
Tim Richardson |
2026-04-13T19:25:05+10:00 |
feat(shopify): add silent fulfillment helper
Add a Shopify fulfillment-order helper that creates fulfillments with customer notifications disabled so local pickup and similar flows can complete without sending the standard shipping email. Cover allocation, over-fulfillment, payload shape, and missing-scope failures with focused tests.
|
76b64cc04 |
Tim Richardson |
2026-04-13T19:23:44+10:00 |
fix(cached_dear): add order backorder lookup
Add a cached_dear Misc Functions lookup that accepts an order number and renders the backorder report in the cached_dear shell instead of requiring the three_pl view. Share the order analysis context between cached_dear and three_pl and cover the new menu and lookup flow with focused tests.
|
54d691a84 |
Tim Richardson |
2026-04-13T13:22:25+10:00 |
fix(three_pl): make DotWMS stock snapshots traceable and accurate
|
4ba1f0fe0 |
Tim Richardson |
2026-04-13T11:34:35+10:00 |
fix(three_pl_dermapen): send Dear carrier to Prism orders
|
5538123a8 |
Tim Richardson |
2026-04-13T11:09:10+10:00 |
chore(starshipit): fix mypy issues in fetch tooling
Tighten Starshipit typing around request payloads, optional task arguments, and Dear setup so the shipped-order tooling passes focused mypy checks without changing runtime behavior.
|
dae2368e3 |
Tim Richardson |
2026-04-13T10:39:47+10:00 |
fix(starshipit): support efficient targeted shipped-order fetches
Reuse the generic exact-order Starshipit fetch path for Status Anxiety and UpThere so operators can reconcile a single shipment without scanning all shipped pages or advancing the shipped watermark.
|
630084c6a |
Tim Richardson |
2026-04-13T09:47:16+10:00 |
chore(opencode): retire legacy bg-launcher agent
|
cd3f3d3a7 |
Tim Richardson |
2026-04-10T19:08:22+10:00 |
chore: wire bg tools and preserve Dermapen error details
Route background command docs through the dedicated bg tools and keep Dermapen reconciliation messages visible in AdditionalAttribute10 for Dear error states. Add regression coverage for the Dermapen AA10 sync behavior.
|
1206cf28b |
Tim Richardson |
2026-04-10T16:54:17+10:00 |
chore(opencode): simplify background deploy worker flow
Clarify that deploy background runs already execute inside the deploy subagent so prompts and docs do not recurse back into deploy orchestration. Remove the bg-tools plugin entry now that the worker prompt handles the run directly.
|
ac5de5add |
Tim Richardson |
2026-04-10T16:53:19+10:00 |
fix(integration): defer retryable ship failure emails
Normalize DJCity Starshipit email recipients to the shared settings source and wait for a second retryable ship-step failure before emailing. This reduces noisy one-off alerts while keeping repeated shipping failures visible.
|
09aa3acad |
Tim Richardson |
2026-04-10T14:10:32+10:00 |
fix(integration): repair UpThere settings back link
Point the UpThere auto-pick settings page back link at the starshipit namespace so the page renders without NoReverseMatch in production.
|
43267ca51 |
Tim Richardson |
2026-04-10T14:00:59+10:00 |
fix(integration): repair UpThere settings links
Point the UpThere auto-pick settings and reset templates at the starshipit URL namespace so the settings page can render without NoReverseMatch in production.
|
0bd31fea3 |
Tim Richardson |
2026-04-10T13:55:26+10:00 |
fix(integration): ignore SSI mismatch errors in DJCity
Switch DJCity shipped-order reconciliation to REPORT_AND_IGNORE so quantity mismatches are logged but do not block downstream shipment processing. Keep the task-level regression coverage aligned with the explicit policy and startup log message.
|
cb848653c |
Tim Richardson |
2026-04-10T13:04:53+10:00 |
fix(integration): speed up UpThere shipped fetch
Split UpThere shipped-order fetching into a narrow incremental pass and a daily 7-day backfill, and short-circuit fully shipped fulfilments before fetching full SSI order details. Add per-run summary counters so the shipped-order scan volume and no-op skips are visible in job logs.
|
3988f66d1 |
Tim Richardson |
2026-04-10T12:51:31+10:00 |
chore(opencode): add background tools plugin
Register the project background-tools plugin in opencode.json and add the bg_status helper so background runs can be queried from the workspace.
|
61ee8cde4 |
Tim Richardson |
2026-04-10T11:58:27+10:00 |
```text docs: Clarify deploy command arguments
Document that the deploy command accepts one or more namespace
arguments and ensure those arguments are passed through to the deploy
workflow.
This makes the command behavior clearer for operators and avoids
ambiguity when deploying to multiple namespaces in a single run.
```
|
2c29b353a |
Tim Richardson |
2026-04-10T11:50:29+10:00 |
chore: update heavy-review defaults
Let the heavy-review command default to reviewing uncommitted changes so it matches how it is invoked in practice. Also keep the local IDE module metadata aligned with the repository source root.
|
67669fa06 |
Tim Richardson |
2026-04-10T11:49:33+10:00 |
fix(integration): add SSI mismatch ignore policy
Add the REPORT_AND_IGNORE quantity mismatch policy, log the active policy at shipped-order job startup, and keep mismatch failures isolated to the current shipment. Preserve checkpoint advancement on mismatches while letting unexpected run-level failures surface so job status and alerts stay accurate.
|
9525d9f37 |
Tim Richardson |
2026-04-10T11:05:38+10:00 |
fix(integration): add DJCity shipped-order filters
Mirror the UpThere fetch form for DJCity so support can rerun shipped-order reconciliation by date range or exact SSI order without advancing the saved watermark. Keep UpThere on its custom Starshipit scheduler while restoring the periodic send-to-SSI job and removing stale generic schedules.
|
a246efd94 |
Tim Richardson |
2026-04-10T07:55:09+10:00 |
```text fix(shopify): Guard unsafe Loop return reconciliation
Block pass-two exchange processing when pass one could not safely
reconcile the original return and credit note, so follow-up payments
are not created from a broken state.
Add clearer diagnostics for underfunded credit notes by including SKU
mismatch hints, avoid duplicating existing Loop upsell payments on
exchange invoices, and log handling-fee receive-money failures with
account and amount details for faster investigation.
Tighten Loop configuration validation so the Stripe account must be a
bank account, matching how receive-money entries are posted in Cin7.
```
|
c708260a3 |
Tim Richardson |
2026-04-10T06:32:16+10:00 |
```text fix(shopify): Handle ordinary upsell deficit returns
Adjust Loop return credit allocation for upsell deficit cases where the
handling fee fully consumes available return credit and Stripe cash
must fund the remaining fee and exchange invoice.
Update pass-one and pass-two processing to avoid expecting Loop-bank
transfers or credit-note consumption that do not exist in this flow,
and add regression tests covering the revised fee and invoice funding
behavior.
```
|
d52db949b |
Tim Richardson |
2026-04-09T22:32:39+10:00 |
fix(integration): update stocktake flow and export reporting
|
de349bdf4 |
Tim Richardson |
2026-04-09T16:34:40+10:00 |
fix(integration): avoid reposting prebooked Loop direct refunds
|
5ea7f93bd |
Tim Richardson |
2026-04-09T15:13:42+10:00 |
fix(integration): schedule 1300tempfence financial transaction syncs
Keep 1300tempfence financial analytics current by enabling dedicated Zoho and PostgreSQL exports there, and expand the transactions cache pilot from AU-only to the full 1300TempFence instance set.
|
4c36e1fcf |
Tim Richardson |
2026-04-09T14:30:44+10:00 |
fix(integration): reduce Sheets export request count
Resize Google Sheets grids once up front when row counts are known and retry 429 quota responses with backoff. Pass expected row and column counts from large export callers and the large-export harness to avoid per-chunk resize requests.
|
06cd76117 |
Tim Richardson |
2026-04-09T14:18:40+10:00 |
```text docs: Clarify cache tombstone validation
Document the financial transactions cache contract and explain why
retained `voided=True` `CachedTransaction` rows are expected during
bucket refreshes.
Add pilot guidance so reviewers treat missing cache rows and extra
active rows as correctness issues, while recognizing extra voided rows
as intentional tombstones for downstream reprocessing.
```
|
5e550f860 |
Tim Richardson |
2026-04-09T14:18:07+10:00 |
fix(integration): resize Sheets grid for chunked exports
Resize worksheet grid before chunked Google Sheets writes so large exports do not fail at chunk boundaries. Add a standalone harness to validate very large sheet exports end-to-end.
|
a32accdf6 |
Tim Richardson |
2026-04-09T13:19:52+10:00 |
feat(integration): add financial transactions account view
Add transaction/account layout variants backed by a shared cached source dataset, and chunk Google Sheets writes with retries for large exports. Keep CSV and Sheets exports variant-aware without refetching Dear data.
|
c2d52fc72 |
Tim Richardson |
2026-04-09T11:25:38+10:00 |
feat(integration): resume Google Sheets exports after OAuth reconnect
Queue export work behind background jobs so users can reconnect Google Drive and finish exports reliably through job detail redirects. Also backfill missing account names in the financial transactions report.
|
d7041ca9f |
Tim Richardson |
2026-04-09T10:42:38+10:00 |
fix(integration): cap financial transactions HTML preview
Prevent the web pod from rendering the full financial transactions result set in-browser for very large reports. Cache a preview-sized payload for the HTML page while keeping full CSV and Google Sheets exports available.
|
14414fffb |
Tim Richardson |
2026-04-09T09:53:51+10:00 |
feat(integration): add Dear financial transactions extract
Let users run a background report over a date range and export live Dear financial transactions to CSV or Google Sheets. Handle expired cached results gracefully and avoid duplicating large report payloads during rendering.
|
6ce053260 |
Tim Richardson |
2026-04-08T18:22:45+10:00 |
fix(integration): stop capping test-location stocktakes
Keep draft reuse and validation bypass for the TEST location, but only apply the 10-line stocktake cap when TESTING is explicitly enabled.
|
41911556e |
Tim Richardson |
2026-04-08T18:03:55+10:00 |
fix(integration): default stocktake received date
Set ZeroStockOnHandProducts ReceivedDate to the current date when building stocktake payloads so DEAR receives a concrete received date for new stock rows.
|
f31f9192e |
Tim Richardson |
2026-04-08T17:44:41+10:00 |
fix(integration): skip empty zero-stock stocktake rows
Keep non-zero stocktake lines unchanged, but omit ZeroStockOnHandProducts rows when the requested quantity is zero because DEAR rejects those payload rows.
|
769d987e1 |
Tim Richardson |
2026-04-08T16:59:12+10:00 |
fix(integration): align DEAR stocktake payload handling
Tighten stocktake typing and DotWMS test-mode behavior so DEAR stocktake requests match the documented payload shape and are easier to diagnose when rows are dropped.
|
994c611ff |
Tim Richardson |
2026-04-08T09:26:25+10:00 |
fix(starshipit): pass task job to sale cache refresh
Propagate the current Starshipit task job into sale-cache lookups so Dear refreshes on cache misses stay attached to the real task context instead of emitting 'called without a job' warnings.
|
1bf4a5275 |
Tim Richardson |
2026-04-08T09:08:44+10:00 |
fix(upthere): harden task webhook handling
Extract validated webhook sale identity parsing and clean up UpThere task typing so periodic task registration and task modules pass mypy cleanly. Keep the runtime flow unchanged while making payload and queue handling explicit.
|
7ec31afcc |
Tim Richardson |
2026-04-08T08:38:50+10:00 |
fix(starshipit): checkpoint upthere shipped fetch progress
Schedule UpThere fetch-shipped runs and cap stale watermark lookbacks so the route no longer reprocesses from old timestamps. Persist per-page shipped-order checkpoints so long runs can resume without starting over.
|
ac6fe51e1 |
Tim Richardson |
2026-04-07T13:46:00+10:00 |
```text chore: Add OpenCode plugin lockfile
Add the generated npm lockfile for the local OpenCode plugin
dependency. This pins the plugin and transitive package versions so
agent tooling installs stay consistent across environments.
```
|
fd0c156db |
Tim Richardson |
2026-04-07T13:45:35+10:00 |
fix(cached_dear): normalize zero-total Xero discount lines
Send fully discounted Dear lines to Xero as plain /bin/bash lines so credit notes like CR-34590 no longer fail line-total validation.
|
4cf95709e |
Tim Richardson |
2026-04-04T13:27:13+11:00 |
fix(cached_dear,three_pl_onemile): clarify in-progress stocktake behavior
Document the live Dear stocktake API behavior and align the Onemile harness and UI with the fact that stocktakes are created as IN PROGRESS. Warn operators that launching the stocktake locks the location for fulfilments and other stock activity until it is completed or voided.
|
efd638423 |
Tim Richardson |
2026-04-02T19:18:20+11:00 |
feat(cached_dear,three_pl_onemile): enhance stocktake flow with fallback handling and diagnostics
Introduce fallback rows handling for unexpected alias keys from Dear for stocktake lists, with configurable retries and enhanced logging. Add a test harness for the Onemile PlanA stocktake flow to support diagnostics and execution scenarios. Extend tests to validate edge cases for mismatched or aliased list keys.
|
74c309e5b |
Tim Richardson |
2026-04-02T15:01:21+11:00 |
fix(three_pl): support draft and in-progress PlanA stocktakes
|
1ab31f70c |
Tim Richardson |
2026-04-01T22:42:34+11:00 |
fix(cached_dear): tighten consolidated diagnostic amount matching
|
c57ba942b |
Tim Richardson |
2026-04-01T15:38:51+11:00 |
feat(cached_dear): add Dear-side diagnostic modes and Google export
|
e631010f9 |
Tim Richardson |
2026-04-01T14:56:36+11:00 |
fix(core,cached_dear): redirect completed job pages
|
d8de2f383 |
Tim Richardson |
2026-04-01T14:49:42+11:00 |
feat(three_pl,three_pl_onemile): add manual PlanA stocktake form
Add a manual Onemile form that resolves the latest stored DotWMS snapshot for a user-entered Dear location before launching the draft stocktake task. Keep the flow unscheduled and cover the location-based task wiring with targeted regressions.
|
7d405cdb2 |
Tim Richardson |
2026-04-01T11:28:53+11:00 |
feat(cached_dear): add Dear consolidated diagnostic tool
|
a5f50db29 |
Tim Richardson |
2026-04-01T10:11:39+11:00 |
feat(shopify): improve Dear consolidated report tooling
|
a67a48948 |
Tim Richardson |
2026-03-31T21:35:28+11:00 |
feat(shopify): add Dear/Xero loop reconciliation harness
|
86b8b7ee5 |
Tim Richardson |
2026-03-31T21:24:20+11:00 |
feat(integrations): add DotWMS stocktake workflow and harden Prism handling
|
f4a34defd |
Tim Richardson |
2026-03-31T21:24:07+11:00 |
feat(three_pl,three_pl_onemile): add PlanA draft stocktake flow
Build Dear draft stocktakes from stored DotWMS PlanA snapshots so reconciliation can move from the stock difference report into Dear without relying on live stock. Also clean up the DotWMS typing surface so the new task and models pass targeted mypy checks.
|
3adf929b4 |
Tim Richardson |
2026-03-31T21:24:03+11:00 |
fix(prism): tighten outbound address validation
|
375a17cff |
Tim Richardson |
2026-03-31T16:24:53+11:00 |
```text fix(three_pl,three_pl_amethyst): Preserve 3PL IDs on requeue
Keep existing `three_PL_fulfilment_id` values when fulfilment rows are
reset for reprocessing so later Amethyst webhooks can still match the
original shipment.
Also add Amethyst order-number fallback matching for rows missing a 3PL
ID and backfill the recovered identifier from webhook data. This lets
requeued fulfilments continue through webhook and shipping flows instead
of being left unmatched.
```
|
8e9f32c5e |
Tim Richardson |
2026-03-31T16:19:24+11:00 |
fix(prism): clarify Zoho stock upload progress
Report Zoho row preparation progress in terms that distinguish prepared upload rows from processed StockSync snapshots. Add regression coverage for the new progress message.
|
89ce43de5 |
Tim Richardson |
2026-03-31T15:25:09+11:00 |
fix(prism): aggregate stock comparison rows for Zoho and reports
Prevent batch-split Prism stock rows from overwriting Cin7 values in Zoho and showing misleading zero-QOH rows in exports. Keep the reporting and upload paths aligned at SKU and location granularity.
|
aa9e92466 |
Tim Richardson |
2026-03-31T15:19:55+11:00 |
fix(threepl): clean up unmanaged warehouse fulfilments
Prevent mixed-warehouse 3PL rows from lingering in operator views by skipping unmanaged picks during refresh and quarantining or deleting stray rows in a background cleanup task. Also tighten legacy typing in the touched job and task helpers so the new workflow stays lint- and mypy-clean.
|
ace6754c6 |
Tim Richardson |
2026-03-31T12:12:23+11:00 |
fix(prism): lock customer reference into outbound payload
|
41a3085cf |
Tim Richardson |
2026-03-31T11:58:45+11:00 |
fix(webhooks): handle status anxiety retries and retain 3PL payloads
|
2d10c52a5 |
Tim Richardson |
2026-03-31T11:27:10+11:00 |
fix(webhooks): support ignored operator failures
Let operators mark known non-actionable webhook errors as Ignore without losing visibility. Keep ignored rows visible in management screens while excluding them from attention banners until they are reset for reprocessing.
|
9942fcbb7 |
Tim Richardson |
2026-03-31T10:53:22+11:00 |
fix(prism): populate address line from shipping address
Keep Prism's Address_Line aligned with the validated Dear shipping line and cover the serialized payload in tests.
|
ae39d2c59 |
Tim Richardson |
2026-03-31T10:53:22+11:00 |
docs(ui): note theme support requirement
|
85042dded |
Tim Richardson |
2026-03-31T10:52:22+11:00 |
fix(webhooks): add 3PL failure management views
Use event-specific Dear sale lifecycle sources and backfill generic rows so order webhook diagnostics are more precise. Add operator-facing 3PL and Dermapen screens to inspect, reset, and reprocess actionable Dear order webhooks without using admin.
|