Skip to content

Collapse the Open Source catalog to four named tiers#514

Merged
FuJacob merged 2 commits into
mainfrom
chore/base-model-catalog-four-tiers
Jun 1, 2026
Merged

Collapse the Open Source catalog to four named tiers#514
FuJacob merged 2 commits into
mainfrom
chore/base-model-catalog-four-tiers

Conversation

@FuJacob

@FuJacob FuJacob commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Summary

Collapses the Open Source model catalog to a single, coherent four-tier ladder so users stop
seeing five names spread across two families (tabby-2-mini/base/pro plus a parallel
tabby-2-gemma-mini/-pro sub-brand). The new lineup is nano / mini / base / pro:

New label File Was
tabby-2-nano Qwen3.5-0.8B-Base.i1-Q6_K.gguf tabby-2-mini
tabby-2-mini Qwen3.5-2B-Base.i1-Q4_K_M.gguf tabby-2-base
tabby-2-base gemma-4-E2B.i1-Q6_K.gguf tabby-2-gemma-mini (now the default)
tabby-2-pro gemma-4-E4B.i1-Q4_K_M.gguf tabby-2-gemma-pro
dropped Qwen3.5-4B-Base.i1-Q4_K_M.gguf tabby-2-pro

Display names are derived from the GGUF filename (the persisted state is the filename), so the
relabel needs no re-download and changes no one's selected model. All four download URLs were
verified to resolve (HTTP 200) before committing.

Onboarding now reads nano (Quick) / base (Everyday, Recommended) / pro (Powerful), and
tabby-2-base (gemma-4-E2B) is the default load.

Validation

xcodebuild ... test ... CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO \
  -only-testing:CotabbyTests/RuntimeAndInputModelValueTests \
  -only-testing:CotabbyTests/OnboardingTemplateRecommenderTests
# ** TEST SUCCEEDED **  Executed 17 tests, 0 failures
#   RuntimeAndInputModelValueTests        4/4  (catalog displayName mappings)
#   OnboardingTemplateRecommenderTests   13/13 (tier -> GGUF: nano / base / pro)

swiftlint lint --quiet   # exit 0 (clean)

App-hosted tests run unsigned (the default-signed bundle hits a Team ID mismatch on this machine).

Linked issues

None filed. Follow-up to the base-model migration; addresses recurring confusion from the
five-names-two-families catalog.

Risk / rollout notes

  • Relabel, not a re-download. displayName is derived from the filename and the persisted state
    is the filename, so an existing user's installed model keeps working and just shows its new label.
  • Qwen3.5-4B-Base retired. Removed from the download list and preferred-load order. An
    already-installed copy still loads and falls back to its raw filename (existing retired-model
    behavior, covered by a test).
  • Default + Everyday are now tabby-2-base (gemma-4-E2B, ~4.5 GB). This makes the recommended
    onboarding download larger than before (~1.4 GB Qwen 2B previously). Intentional per the requested
    lineup. Quick stays nano (~0.8 GB); Powerful is pro (gemma-4-E4B, ~5.0 GB).
  • Naming caveat carried over: base is both a tier name and the technical term for these
    non-instruct models. Kept per the requested lineup.

Greptile Summary

This PR collapses the five-model Open Source catalog into a clean four-tier ladder (nano / mini / base / pro), retiring the tabby-2-gemma-* sub-brand and the dropped Qwen 4B, and rewires onboarding templates to the new filenames.

  • Catalog relabeling: displayName switch in LlamaRuntimeModels.swift updated to the new four-tier names; Qwen 4B removed from downloadableModels; display-name and retired-model fallback tests extended to cover all four active tiers.
  • Onboarding rewiring: .everyday now installs gemma-4-E2B (4.5 GB, up from 1.4 GB) and .powerful now installs gemma-4-E4B (5.0 GB, previously the broken dropped-4B path); test assertions updated accordingly.
  • preferredModelNames reordered: gemma-4-E2B.i1-Q6_K.gguf moved to position 0, making it the auto-loaded model for any user who has it installed — despite the PR description's explicit note that this change was intentionally deferred.

Confidence Score: 4/5

Safe to merge for new users and single-model installs; users with both Qwen 2B and Gemma E2B installed will silently switch to the larger model on next launch.

The PR description explicitly deferred promoting Gemma E2B to the default load due to the 1.4 GB to 4.5 GB size jump, yet preferredModelNames and the README both implement that promotion. Any user who had the old tabby-2-gemma-mini installed alongside the old tabby-2-base will experience a silent auto-load change.

Cotabby/Models/LlamaRuntimeModels.swift and README.md need to be reconciled — either the preferredModelNames order should revert to keep Qwen 2B first, or the PR description should be updated to acknowledge this as an intentional change.

Important Files Changed

Filename Overview
Cotabby/Models/LlamaRuntimeModels.swift Relabels displayName mappings (nano/mini/base/pro), removes 4B Qwen entry from catalog, and moves gemma-4-E2B to first position in preferredModelNames — contradicting the PR description's explicit statement that changing the default load was intentionally excluded.
Cotabby/Models/OnboardingTemplate.swift Rewires .everyday to gemma-4-E2B (4.5 GB) and .powerful to gemma-4-E4B (5.0 GB); .quick is unchanged. The everyday tier now triggers a 3x larger download during onboarding, though this is intentional per the new tier lineup.
CotabbyTests/ModelAndPresentationValueTests.swift Extends displayName test coverage to all four active tiers and adds a retired-model fallback assertion for the dropped Qwen 4B; tests are aligned with the new catalog.
CotabbyTests/OnboardingTemplateRecommenderTests.swift Updates tier-to-GGUF assertions to the new filenames; availability-gating tests remain structurally unchanged, keeping the 8 GB disable floor whose governing comment is now stale (previously flagged).
README.md Collapses the five-row model table to four rows with new tier names; the updated default description contradicts the PR description's claim that making Gemma E2B the default was intentionally left out.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph Old["Old catalog (5 models)"]
        O1["tabby-2-mini\nQwen3.5-0.8B (~0.8 GB)"]
        O2["tabby-2-base\nQwen3.5-2B (~1.4 GB)"]
        O3["tabby-2-pro\nQwen3.5-4B (~2.6 GB) - DROPPED"]
        O4["tabby-2-gemma-mini\ngemma-4-E2B (~4.5 GB)"]
        O5["tabby-2-gemma-pro\ngemma-4-E4B (~5.0 GB)"]
    end
    subgraph New["New catalog (4 models)"]
        N1["tabby-2-nano\nQwen3.5-0.8B (~0.8 GB)"]
        N2["tabby-2-mini\nQwen3.5-2B (~1.4 GB)"]
        N3["tabby-2-base\ngemma-4-E2B (~4.5 GB)"]
        N4["tabby-2-pro\ngemma-4-E4B (~5.0 GB)"]
    end
    subgraph Onboarding["Onboarding tiers to GGUF"]
        QK["Quick"] --> N1
        EV["Everyday 1.4GB to 4.5GB"] --> N3
        PW["Powerful"] --> N4
    end
    O1 --> N1
    O2 --> N2
    O3 -. dropped .-> N3
    O4 --> N3
    O5 --> N4
Loading

Fix All in Codex Fix All in Claude Code

Reviews (2): Last reviewed commit: "Make tabby-2-base the default and the Ev..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

FuJacob added 2 commits June 1, 2026 16:48
Rename the base-model lineup to a single nano/mini/base/pro ladder and drop the parallel gemma-* sub-brand plus the 4B Qwen tier, so a user sees one coherent set of four models instead of five names spread across two families.

tabby-2-nano = Qwen3.5-0.8B-Base.i1-Q6_K (was tabby-2-mini); tabby-2-mini = Qwen3.5-2B-Base.i1-Q4_K_M (was tabby-2-base, still the default load); tabby-2-base = gemma-4-E2B.i1-Q6_K (was tabby-2-gemma-mini); tabby-2-pro = gemma-4-E4B.i1-Q4_K_M (was tabby-2-gemma-pro).

Qwen3.5-4B-Base is retired from the catalog; an already-installed copy keeps working and falls back to its raw filename like any user-supplied GGUF. Onboarding's Powerful tier now installs gemma-4-E4B (the new pro) since it previously pointed at the dropped 4B Qwen. Display names are derived from the filename, so this is a relabel: no re-download and no change to a user's persisted model selection.
Per the requested lineup: the base tier (gemma-4-E2B) is now the default load (first in preferredModelNames) and what onboarding's Everyday/Recommended tier installs. Quick stays on nano (Qwen 0.8B) and Powerful on pro (gemma-4-E4B), so the onboarding labels read nano / base / pro.
@FuJacob FuJacob merged commit ca2269a into main Jun 1, 2026
4 checks passed
@FuJacob FuJacob deleted the chore/base-model-catalog-four-tiers branch June 1, 2026 23:57
Comment on lines 159 to 166
static let `default` = LlamaRuntimeConfiguration(
runtimeDirectoryPath: nil,
preferredModelNames: [
"gemma-4-E2B.i1-Q6_K.gguf",
"Qwen3.5-2B-Base.i1-Q4_K_M.gguf",
"Qwen3.5-0.8B-Base.i1-Q6_K.gguf",
"Qwen3.5-4B-Base.i1-Q4_K_M.gguf",
"gemma-4-E2B.i1-Q6_K.gguf",
"gemma-4-E4B.i1-Q4_K_M.gguf"
],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 preferredModelNames promotes Gemma E2B to first despite PR description explicitly deferring that

The PR description's "Risk / rollout notes" says "Making base the default is a one-line change but raises the default download from ~1.4 GB to ~4.5 GB, so it is intentionally left out of this PR." Yet this diff moves gemma-4-E2B.i1-Q6_K.gguf to position 0 in preferredModelNames, and the README now says "tabby-2-base (Gemma E2B) is the default." The locator picks the first GGUF that exists, so any user who has both Qwen 2B and Gemma E2B installed will silently auto-load Gemma E2B (4.5 GB) instead of Qwen 2B (1.4 GB) after this update — a direct contradiction of "no change to anyone's selected model."

Fix in Codex Fix in Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant