Commits

Back

Последние изменения из mirror GitHub. Здесь видны не только SHA, но и автор, дата, количество файлов и зоны риска.

Reset

Показаны 3478 commit'ов, страница 35 из 70.

Previous | Next

ab55b71

fix(tasks): parent link must beat the global table-link style

2026-08-11T11:56:54+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

e12d5d7

feat(tasks): compact list table - merged people and state columns, narrower widths

2026-08-11T11:53:54+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 22 | core 0 | module 0 | forbidden 0

Flags:

4559e3a

feat(theme): contrast theme is fully flat - all shadows removed

2026-08-11T09:48:56+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

c3bfd07

feat(theme): high-contrast theme now meets WCAG (AA text 4.5:1 / non-text 3:1, most pairs AAA 7:1)

2026-08-11T09:42:40+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

2046036

fix(profile): theme hint now reminds to press the save button after choosing a scheme

2026-08-11T09:08:50+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 18 | core 0 | module 0 | forbidden 0

Flags:

07e47f1

feat(profile): explain the high-contrast theme under the theme select

2026-08-11T08:53:41+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 20 | core 0 | module 0 | forbidden 0

Flags:

5f9eb44

fix(web): rename high-contrast theme option to describe the theme, not the audience

2026-08-11T08:25:08+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 18 | core 0 | module 0 | forbidden 0

Flags:

cb05f3b

fix(api): feature-flag and AI-intent seeding is idempotent and race-safe (unique index + once-per-request)

2026-08-11T08:02:36+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 8 | core 0 | module 0 | forbidden 0

Flags:

bc106ac

fix(api): module scheduler task registration is idempotent (registerTask upsert + unique index + self-healing dedupe) - stops module_scheduled_tasks growing by 4 rows per API request

2026-08-11T07:20:21+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

246e0e9

fix(web): service-worker retry page language follows the CRM locale (crm_locale cookie), Accept-Language parsed by q-priority

2026-08-11T06:35:24+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

61ab8d5

feat(api): idempotency for contact/client/counterparty/company/subtask creates + double-click protection

2026-08-11T06:29:46+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 16 | core 0 | module 0 | forbidden 0

Flags:

c5070d5

feat(web): auto-retry page loads on 5xx via service worker + recoverable 500 page

2026-08-11T05:57:14+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 10 | core 0 | module 0 | forbidden 0

Flags:

0e904c3

feat(api): automatic 5xx retry for idempotent writes (POST/PUT/PATCH with X-Idempotency-Key)

2026-08-11T05:46:00+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 6 | core 0 | module 0 | forbidden 0

Flags:

91b071d

fix(web): status-bar retry message now resolves its translation key (js.notify.retrying_data)

2026-08-11T05:28:49+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

bfd0404

feat(kanban): always stream tasks in fixed 100-card portions

2026-08-10T21:20:25+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 10 | core 0 | module 0 | forbidden 0

Flags:

b972675

test(web): graceful npm fallback + body-preservation assert for non-idempotent 425

2026-08-10T21:08:57+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

d472199

test(web): unit tests for api.js anti-replay retry path (425/307/opaqueredirect)

2026-08-10T21:07:47+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

cba0344

fix(logs): harden extractErrorCode against non-array details blobs

2026-08-10T21:01:06+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

fce196d

feat(admin): hourly frontend API error chart in Admin → Logs

2026-08-10T21:00:01+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 24 | core 0 | module 0 | forbidden 0

Flags:

5e70d18

fix(kanban): preserve horizontal board scroll and guard load-more page cursor

2026-08-10T20:46:03+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

761e55a

fix(kanban): append load-more cards in-place so column scroll positions are preserved

2026-08-10T20:39:18+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

cb4eb0b

fix(db): migration to add tags.description column for existing installs

2026-08-10T20:28:06+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 6 | core 0 | module 0 | forbidden 0

Flags:

967aef4

docs(agents): document tag_public_id multi-select and __none marker in Tags System section

2026-08-10T20:05:20+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

69dcf84

fix(api): antiReplayCap respects maxRetries:0 and is hoisted out of the retry loop

2026-08-10T19:54:43+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

aff31d3

fix(api): extra retry for TLS 0-RTT anti-replay rejections; CHANGELOG entry

2026-08-10T19:52:36+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

b67ca45

fix(api): treat opaque-redirect responses (status 0 from redirect:manual) as anti-replay 307 and re-send with body intact

2026-08-10T19:45:03+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

f03697d

fix(tasks): saved views use the tag filter select; tags catalog limit 200; drop dead chip markup

2026-08-10T19:37:16+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 8 | core 0 | module 0 | forbidden 0

Flags:

e09ae65

feat(tasks): tag filter select on the tasks page + __none (no tags) support everywhere

2026-08-10T19:32:40+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 8 | core 0 | module 0 | forbidden 0

Flags:

d0615e2

refactor(kanban): drop redundant tag chip indicator now that the tag filter has a proper select

2026-08-10T19:28:32+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 6 | core 0 | module 0 | forbidden 0

Flags:

9ae7d38

feat(kanban): tag filter dropdown in the filter bar, synced with card-tag chips; server-side over full dataset

2026-08-10T19:25:20+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 6 | core 0 | module 0 | forbidden 0

Flags:

dd215c9

docs(openapi): document GET /api/v1/tasks query filters (22 params)

2026-08-10T19:19:27+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

5de67ed

fix(tasks): due-date filters resolve in the user's local timezone

2026-08-10T19:15:10+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 6 | core 0 | module 0 | forbidden 0

Flags:

8a743b0

fix(tasks): review hardening for server-side filters

2026-08-10T19:10:47+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

1347d5a

feat(tasks): resolve ALL filters server-side over the full dataset — kanban and tasks page no longer filter only the loaded cards/pages

2026-08-10T19:02:58+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 8 | core 0 | module 0 | forbidden 0

Flags:

bcb02ef

fix(api): anti-replay retry must not be gated by allowRetry — plain PATCH/POST (profile save, task create) are exactly the requests that hit 425/307 on 0-RTT hosts, and redirect:'manual' means the browser no longer auto-follows the 307; gate on opts.retry !== false so only explicit retry:false opts out. Fixes a regression where those calls surfaced HTTP_307/HTTP_425 instead of recovering

2026-08-10T18:36:30+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

f6c9999

docs(changelog): record anti-replay tolerance for all methods + 30s default timeout

2026-08-10T18:03:53+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

34c9942

feat(api): tolerate TLS 1.3 0-RTT anti-replay (425/307) for ALL methods without any server config — redirect:'manual' stops the browser from auto-following the 307 (which dropped PATCH/POST bodies -> 422) and the request() loop re-sends the request, body intact, since 425/307 mean it never reached the app; raise default timeout to 30s so slow shared-hosting pools no longer surface network errors

2026-08-10T17:57:22+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

0f20ba0

fix(cache): respect per-call TTL capped by global api_file_cache_ttl so kanban/dashboard payloads refresh in 30-45s instead of the whole global TTL; invalidate page cache on task mutations (create/update/delete/move/bulk, module add/remove) so the board and its column counters update immediately

2026-08-10T17:51:27+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 8 | core 0 | module 0 | forbidden 0

Flags:

6b0845f

refactor(kanban): skip server status count query on chunk pages; format column counters with thousands separator ("3 606")

2026-08-10T17:42:54+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

386a3d4

fix(kanban): real column counters from server (status_counts) + working background load-more; drop 'Shown X of Y' summary text

2026-08-10T17:38:08+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 12 | core 0 | module 0 | forbidden 0

Flags:

9ad0408

feat(api): treat 425 Too Early (TLS 0-RTT anti-replay) as retryable so installs with ssl_early_data recover automatically; record network/timeout/HTML transport failures that survive retries as frontend_api_error telemetry (previously invisible)

2026-08-10T17:18:29+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

425d819

fix(api): scope automatic retry default to GET/HEAD only (idempotent POSTs keep opt-in retry:true to avoid double-retry with ai.js/jobs own loops); caller abort always wins over timeout tick; status-bar retry hint timer extended to 30s

2026-08-10T16:59:52+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 6 | core 0 | module 0 | forbidden 0

Flags:

1fdb937

feat(api): automatic one-shot retry for idempotent requests on transient failures (network, timeout, 429/5xx, HTML response) so intermittent data-load errors recover without a manual page reload; respects Retry-After; opt-out with retry:false; status bar shows "Повторная попытка…" during retry; retryableStatus now includes 500

2026-08-10T16:58:21+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 26 | core 0 | module 0 | forbidden 0

Flags:

5a5dea8

fix(api): task list with limit=0 (unlimited) must skip QueryBuilder OFFSET too - a bare OFFSET without LIMIT is invalid MySQL and broke the kanban page endpoint; unlimited lists now emit a plain query

2026-08-10T13:49:27+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

af45a42

feat(kanban): load ALL accessible tasks by default (no 100-card cap); new global setting kanban_max_cards (Admin > Settings): 0 = show everything at once, N = chunked with automatic load-more on scroll (IntersectionObserver); honest summary counter shows real total; task list API supports limit=0 = unlimited

2026-08-10T13:47:32+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 24 | core 0 | module 0 | forbidden 0

Flags:

b973815

fix(web): dashboard cycles widget - misplaced closing quote turned HTML string concat into a relational comparison, rendering literal "false" as the whole widget body when active cycles exist; cycle cards/progress/task counters now render

2026-08-10T13:32:02+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 4 | core 0 | module 0 | forbidden 0

Flags:

da961ef

feat(web): server-side pagination and server-side filters for tasks and projects lists (limit 50/30, page param, manager/priority/client filters); add projects pager UI

2026-08-10T12:30:33+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 8 | core 0 | module 0 | forbidden 0

Flags:

dd17b3d

fix(api): project detail - include client_title via counterparties join so the client name renders instead of raw public_id

2026-08-10T12:20:04+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

e53da96

fix(web): entry route - canonical redirect /web/index.php -> /web/ (preserving query string) as requested; explicit ?route= values still work directly,

2026-08-10T09:48:06+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags:

cc5b9cb

fix(web): entry route - map path-derived /web/index.php to the index route (Dashboard) instead of 404 on unknown index.php route; explicit ?route= values untouched,

2026-08-10T09:45:19+00:00

Anton Barinov <55404783+Anton-Barinov@users.noreply.github.com>

Files: 2 | core 0 | module 0 | forbidden 0

Flags: