feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: 30.2 — unified api surface - #4

Merged
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api
Mar 25, 2026
Merged

feat: 30.2 — unified api surface#4
vieiralucas merged 2 commits into
mainfrom
feat/30.2-unified-api

Conversation

@vieiralucas

@vieiralucasvieiralucas commented Mar 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Update Java SDK for the unified API from Story 30.1
  • BatchEnqueue RPC removed; Enqueue now accepts repeated EnqueueMessage
  • Ack/Nack now accept repeated AckMessage/NackMessage with per-item typed results
  • ConsumeResponse uses only repeated Message messages (singular message field removed)
  • batchEnqueue() replaced by enqueueMany() (no "batch" prefix)
  • BatchEnqueueResult renamed to EnqueueResult
  • Batcher updated to use unified Enqueue RPC for all batch sizes
  • All tests updated and passing (34/34 pass; 1 pre-existing TLS env failure)

Test plan

  • Unit tests: EnqueueResultTest, BatchModeTest, BuilderTest all pass
  • Integration tests: FilaClientTest (enqueue/consume/ack/nack lifecycle) passes
  • Integration tests: BatchClientTest (enqueueMany, auto/linger/disabled batching) passes
  • Verified TLS test failure is pre-existing (fails on main too)

Summary by cubic

Unifies the Java SDK and proto around a single enqueue/ack/nack API with per-item results and typed errors, removing the BatchEnqueue RPC. Adds StreamEnqueue, simplifies ConsumeResponse to messages[], renames client batch APIs to enqueueMany, and routes the batcher through the unified Enqueue.

  • Bug Fixes

    • ack()/nack() now validate exactly one per-item result and require explicit success; empty or unset results throw.
  • Migration

    • Replace FilaClient.batchEnqueue(...) with FilaClient.enqueueMany(...); use EnqueueResult (was BatchEnqueueResult).
    • Protos: remove BatchEnqueue; use EnqueueRequest.messages[], AckRequest.messages[], NackRequest.messages[]; read ConsumeResponse.messages[] only.
    • Handle typed errors: EnqueueError, AckError, NackError.

Written for commit 33358e2. Summary will update on new commits.

- Copy new service.proto: BatchEnqueue RPC removed, Enqueue now takes
repeated EnqueueMessage, Ack/Nack take repeated messages with
per-item results, ConsumeResponse uses only repeated messages field
- Rename BatchEnqueueResult to EnqueueResult (no "batch" prefix)
- Replace batchEnqueue() with enqueueMany() on FilaClient
- Update enqueue() to wrap single message in repeated EnqueueMessage
- Update ack()/nack() to wrap in repeated, parse first result with
typed error handling (AckError/NackError)
- Update Batcher to use unified Enqueue RPC for all batch sizes
- Update consumeStream() to use only getMessagesList() (no singular
message fallback)
- Update all tests to use new API names and types

@cubic-dev-aicubic-dev-aiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/main/java/dev/faisca/fila/FilaClient.java">
<violation number="1" location="src/main/java/dev/faisca/fila/FilaClient.java:222">
P2: `ack()` treats missing/unset per-item results as success. Validate that exactly one result is returned and that it is an explicit success case.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment threadsrc/main/java/dev/faisca/fila/FilaClient.java Outdated
ack() and nack() silently treated empty results and RESULT_NOT_SET as
success. Now both methods validate exactly one result is returned and
that it is an explicit success case, matching the pattern in
enqueueDirect().
@vieiralucas
vieiralucas merged commit 1c2e12c into mainMar 25, 2026
2 checks passed
Sign up for freeto 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

@vieiralucas