eSlider
a8fa202496
chore(release): v0.21.0 ( #78 )
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 5s
Tests / Test (Go 1.25) (pull_request) Successful in 1m29s
Tests / Test (Go stable) (pull_request) Successful in 1m33s
2026-09-23 18:25:00 +01:00
eSlider
c9e16c7169
fix(retry): глобальный rate-limit + Retry-After + cooldown ( #70 )
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 5s
Tests / Test (Go 1.25) (pull_request) Successful in 25s
Tests / Test (Go stable) (pull_request) Successful in 27s
2026-09-17 12:39:25 +00:00
github-actions[bot] and GitHub
c1881e1e61
chore(main): release 0.18.0
2026-09-04 14:47:27 +00:00
github-actions[bot] and GitHub
8595c17f25
chore(main): release 0.17.0
2026-08-31 10:34:21 +00:00
eSlider
220c7e8265
chore(release): v0.16.0 — put-xlsx (excelize) ( #13 )
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 8s
Tests / Test (Go 1.25) (pull_request) Successful in 2m3s
Tests / Test (Go stable) (pull_request) Successful in 2m5s
2026-08-30 13:41:51 +01:00
eSlider
69844c9122
chore(release): v0.15.0 — files folder-ops + docpipe ( #8 )
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Test (Go 1.25) (pull_request) Successful in 25s
Tests / Test (Go stable) (pull_request) Successful in 34s
Tests / Secret scan (gitleaks) (pull_request) Failing after 3s
2026-08-29 16:06:47 +01:00
github-actions[bot] and GitHub
e52cb31bb7
chore(main): release 0.14.0
2026-08-27 22:36:44 +00:00
github-actions[bot] and GitHub
625dd0a60a
chore(main): release 0.13.0
2026-08-27 16:40:41 +00:00
github-actions[bot] and GitHub
df447f2673
chore(main): release 0.12.0
2026-08-27 15:59:02 +00:00
8ced804a6f
chore(main): release 0.11.0 ( #24 )
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 47s
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-19 08:52:13 +01:00
github-actions[bot] and GitHub
0161a92c52
chore(main): release 0.10.0
2026-08-13 09:21:46 +00:00
eSlider
490426c277
docs(crm): capture association graph and invoice/mail quirks
...
Document Medex-learned OO rules (one company, entityId at create, PDF
cache/cleanup, Matrix # truncation) and add invoices pdf/status helpers.
2026-08-06 14:26:43 +01:00
github-actions[bot] and GitHub
1bf417d70f
chore(main): release 0.9.0
2026-07-26 12:27:06 +00:00
1a93579635
chore(main): release 0.8.3 ( #14 )
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 38s
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 15:41:46 +01:00
3b55de5b1d
chore(main): release 0.8.2 ( #12 )
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 38s
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 15:34:27 +01:00
c7275b5c98
chore(main): release 0.8.1 ( #10 )
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 37s
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 15:11:58 +01:00
e3c706aefe
chore(main): release 0.8.0 ( #8 )
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 37s
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 14:48:32 +01:00
github-actions[bot] and GitHub
8804bd3030
chore(main): release 0.7.0
2026-07-23 13:46:17 +00:00
eSlider and Cursor
fab2977cb1
feat(office): mail preview, infinite scroll, pane resize, and scrollbars
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.22) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 38s
Polish the office TUI with proportional pane layout, drag resize, live
filtering, HTML mail preview, paginated mail lists, overflow scrollbars,
flattened navigation, and project save/status fixes; add UpdateProjectStatus.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 22:23:25 +01:00
github-actions[bot] and GitHub
b2aae21390
chore(main): release 0.6.0
2026-06-24 16:36:03 +00:00
eSlider and Cursor
3d4aa10cf9
docs: CHANGELOG for office v0.5.1 release
...
Release Please / Release Please (push) Skipped
Tests / Test (Go 1.22) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 37s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 17:35:44 +01:00
eSlider and Cursor
3b47d1400b
feat(office): table detail panes and Alt+1/2/3 layout toggles
...
Add spreadsheet-style list, split detail pane with forms and document preview,
and Alt+1/2/3 to show/hide panes with even width distribution.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 17:33:50 +01:00
github-actions[bot] and GitHub
cac0ffa2a0
chore(main): release 0.5.0
2026-06-24 15:43:20 +00:00
eSlider and Cursor
4046f4c46a
test(office): replace fixture tests with live OnlyOffice API integration
...
Remove synthetic map-based entity and fetch mapper unit tests; cover all
menu subjects and preview pipelines via integration tests against the real
Workspace API. Handle draft mail without subjects in list mapping.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 16:37:46 +01:00
github-actions[bot] and GitHub
2959168d76
chore(main): release 0.4.0
2026-06-24 15:29:27 +00:00
eSlider and Cursor
f8a73edef3
feat(office): add Workspace TUI with shared bootstrap and test suite
...
Introduce the office Bubble Tea browser (module tree, multi-select lists,
markdown preview) alongside oo, with cmd/internal/bootstrap for shared auth,
unit tests across preview/model/ui/fetch, CI build for both binaries, and
GoReleaser archives for office.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 16:29:04 +01:00
eSlider and Cursor
2e77d8e5c7
ci: add GitHub Actions test pipeline and GoReleaser releases for oo
...
Mirror eSlider/go-config: release-please for semver, tag-triggered GoReleaser
builds cross-platform oo binaries with embedded version metadata.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 14:46:53 +01:00
eSlider and Cursor
87ce3257a8
feat(mails): add Workspace mail CLI with pagination and parsed from fields
...
Manage the OnlyOffice Mail addon via oo mails using existing ONLYOFFICE_* creds,
with automatic page fetching past the 25-message API cap and fromName/fromAddress columns.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 14:44:09 +01:00
eSlider and Cursor
a59b4fb296
feat(crm): merge company slogan variants in dedupe grouping
...
Treat names like "Affirm" and "Affirm — Fraud Engineering" as the same
company for dedupe, deal matching, members, and applications sync lookup.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 12:40:27 +01:00
eSlider and Cursor
b79c097874
feat(crm): dedupe duplicates, fix deal titles, and add cleanup CLI
...
Merge duplicate companies/persons/deals by name, remove duplicate contact
info and opportunity members, and rename malformed " @ Company" titles.
Applications sync now avoids empty-position titles and duplicate members.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 12:34:14 +01:00
eSlider
1b238aca5a
feat(files): project/task Documents API + oo projects|tasks files
...
Library (files.go):
- Types: FileEntry, FolderEntry, ProjectFilesResponse.
- GetProjectFiles, GetTaskFiles, GetFile, UploadProjectFile (POST .../upload),
AttachFilesToTask (POST form files=), UploadTaskFile (upload+attach),
DetachTaskFile (DELETE ?fileid=), RenameFile, DeleteFiles, DownloadFile.
- Helpers: FileEntryNumericID, FileEntryTitle, SafeLocalFileName, projectIDFromTaskMap.
http.go: putJSON for JSON PUT bodies.
CLI: oo projects files {list,upload,download,rename,delete}, oo tasks files
{list,upload,detach}; projects_files.go + tasks_files.go.
Tests: files_integration_test.go (live), files_test.go + testdata (decode).
Docs: CHANGELOG 0.6.0, README, AGENTS.md, cmd/oo/main.go tree.
Made-with: Cursor
2026-04-24 16:28:39 +01:00
eSlider
4eb14c082c
feat(cli)!: subject-based command tree (tea-style) + global --output flag
...
BREAKING:
- Flat oo verb-noun layout replaced with subject → verb, mirroring the
gitea `tea` CLI. Every subject is one file in cmd/oo/:
oo calendar list | events | add | delete
oo projects list | get | milestones | create | update | delete
oo tasks list | get | create | update | delete | subtask add
oo users list | self (alias: oo whoami)
oo contacts list | get | delete | info-add
oo persons list | create | delete
oo companies list | create | delete
oo opportunities list | get | create | delete | stages | member-add
oo cases list | create | delete | member-add
oo crm-tasks list | create | delete | categories
oo applications sync
- Global `--output/-o table|json` flag on the root command; every list uses
a single printTable helper that flattens nested bidCurrency → abbreviation
for readability, truncates long cells, and dumps verbatim in JSON mode.
Library additions surfaced in the CLI:
- oo users / oo whoami via SelfUserID + GetUsers.
- oo projects full CRUD via Create/Update/Delete/GetProjectByID/Milestones.
- oo crm-tasks and oo cases via ListCRMTasks/CreateCRMTask/DeleteCRMTask/
ListTaskCategories/ListCases/CreateCase/DeleteCase/AddCaseMember.
- oo contacts info-add via AddContactInfo.
- oo opportunities stages/member-add via ListDealStages/AddOpportunityMember.
Internal:
- cmd/oo/common.go — rootCmd, newOO (uses AuthenticateContext), printTable,
printObject, fmtCell, deref* helpers.
- cmd/oo/crm.go deleted; content split into contacts.go, opportunities.go,
cases.go, crm_tasks.go for locality.
Docs:
- README: new subject→verb table + migration note.
- AGENTS.md: CLI section rewritten; new rule enforcing subject→verb and
printTable/printObject routing.
- CHANGELOG: 0.5.0 entry with full old→new mapping.
Made-with: Cursor
2026-04-24 14:55:43 +01:00
eSlider
0973975471
refactor!: rename oo-cli → oo, split library by domain, relocate applications
...
BREAKING:
- Binary renamed oo-cli → oo; install path is now
github.com/eslider/go-onlyoffice/cmd/oo.
- Former internal/cli tree removed; cobra commands live in cmd/oo/ as
package main, split by domain (calendar.go, crm.go, tasks.go, apps.go,
common.go, main.go).
- internal/applications moved to cmd/oo/applications/ (CV-specific workflow;
not a library feature).
- examples/applications removed (it depended on an internal package).
Library split (mechanical, zero API surface change):
- client.go — Client, Credentials, Defaults, env helpers, NewClient.
- request.go — Request, Query, Time, Token, MetaResponse, Permissions.
- auth.go — Authenticate/AuthenticateContext/InvalidateToken.
- http.go — transport + ResponseArray/ResponseObject/postFormObject/
putFormObject/deleteObject/unmarshalResponseObject (renamed
from httpx.go).
- projects.go, tasks.go, users.go, calendar.go, crm.go, files.go — typed
/ untyped domain methods. tasks_extra.go merged into tasks.go.
- onlyoffice.go deleted (content redistributed).
AGENTS.md, CHANGELOG.md, README.md updated accordingly.
Made-with: Cursor
2026-04-24 14:55:21 +01:00
eSlider
e2d481e7b8
refactor: DRY auth path, fix Sprintf/RE2 bugs; real integration tests only
...
Why
---
- Sprintf(*p.Title) fed the title as a format string — % in titles broke
the String() method; also panicked on nil Title.
- internal/applications.buildSummary used RE2-unsupported `(?= ...)`
lookahead inside regexp.MustCompile, panicking the first time the
applications-sync path was exercised on Go 1.23+.
- Query() duplicated the auth-expiry check inline while ensureToken()
already handled it — two code paths drifted.
- Request.Debug split Query() into two branches that both unmarshalled
into the same target value. Dead code.
- httptest fixtures that emulated OnlyOffice endpoints were lying to us:
they passed locally yet never caught a single real protocol regression.
What
----
- Project.String(): nil-safe, no Sprintf format-string interpretation.
- buildSummary regex: RE2-safe non-capturing trailing delimiter
`(?:\n## |$)` replaces the lookahead.
- Query() routes through ensureToken(); body marshalling factored into
an unexported requestBodyReader(). Debug flag retained for backwards
compatibility, documented as a no-op, to be removed at next major.
- Dropped Debug: true stray flags in GetTasks/UpdateProjectTask.
- Deleted httptest-based OnlyOffice mocks. unit_test.go is now pure Go
(parsers, helpers, env aliases, ctx cancellation against an unroutable
address). client_test.go is `//go:build integration` and runs against
a real OnlyOffice, skipping cleanly without ONLYOFFICE_URL/USER/PASS.
- AGENTS.md + .cursor/rules/no-synthetic-mocks.mdc document the new
testing policy.
Verified
--------
- `go test ./...` green (15 unit tests across package + internal).
- `go test -tags=integration ./...` green against live
office.produktor.io (5 integration tests: auth, projects, lifecycle,
calendar+CRM read, task list).
- inventar-sync smoke dry-run against live OO project 33 + Gitea found
30 tasks, 0 mutations.
Made-with: Cursor
2026-04-24 12:36:40 +01:00
eSlider
2fc2adadd1
feat(auth): AuthenticateContext + InvalidateToken for long-running syncs
...
Adds two helpers tailored for cron-driven or watcher-style clients:
- AuthenticateContext(ctx) — cancellable variant of Authenticate(). Bypasses
the non-context Query() path and POSTs /api/2.0/authentication.json directly,
so a stalled auth call never outlives the caller's deadline.
- InvalidateToken() — zeroes the cached *Token. Next request (or Authenticate*)
forces a fresh auth. Intended for mid-sync 401 recovery when the server has
revoked/rotated the session while local Expires still looks fresh.
Plain Authenticate() is unchanged; it remains a convenience wrapper.
Unit tests cover cache-hit, forced refresh, and context-cancellation paths.
Refs eSlider/inventar-sync#3 , ASR-0008.
Made-with: Cursor
2026-04-24 12:22:26 +01:00
eSlider
842e9aa132
feat: merge oo-cli and extend library with Calendar/CRM/subtasks/files
...
- Add Calendar helpers (ListCalendars/ListEvents/AddEvent/DeleteEvent)
- Add CRM helpers: contacts, opportunities, cases, CRM tasks, history notes
- Add project-task extras (ListTasks/ListAllTasks/GetTaskByID/AddTask/
AddSubtask/UpdateTaskStatus/DeleteTask, GetProjectByID)
- Add UploadOpportunityFile (multipart) and SelfUserID caching
- Introduce Defaults struct, SetDefaults, GetEnvironmentDefaults;
GetEnvironmentCredentials now accepts ONLYOFFICE_HOST/NAME/PASSWORD aliases
- Add public Authenticate() helper that eagerly primes the token
- Bundle Cobra CLI at cmd/oo-cli with full command surface
(calendar, tasks, subtasks, CRM, applications-sync); CLI-only deps
(cobra, godotenv) kept out of the library surface
- Add httptest-based unit tests for form/multipart helpers
- Docs: CHANGELOG, AGENTS, .env.example, README updates for v0.3 features
Consolidates the standalone eSlider/oo-cli tool into this canonical Go
module (see eSlider/inventar ASR-0008).
Made-with: Cursor
2026-04-24 11:30:11 +01:00