Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Codebase: remove routes, buttons and members nothing reaches, and the checks that still assert them

Open
#362 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
22/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Active
Tech stack
markdown, python, swift

Research direction

Start with the three groups in the issue, beginning with the unreachable .home case in Attention.swift and the Not now buttons in docs/surfaces.json, then the dead symbols in StageKitController and PrivatePackKit. Confirm each name has no references with grep -rnw, delete it, and rerun scripts/check-surfaces.py and scripts/test-check-surfaces.py. Done means the listed suites pass on a native macOS build with no new warnings, and the toolbar gallery changes only for activity-personas.

Written by the indexing model from the issue text.

Description

Outcome: the contract, the registry and the checks describe only what people can reach. Contributors and agents stop finding passing checks for surfaces that no longer exist. Nothing changes for users except one toolbar gallery render, which gains the accessory the app already shows.

Land this after the 15 October train ships. Rebase it last over any branch that edits AppModel, WorkbenchHome, StageKitController or the toolbar files.

1. Home's 'Open Home…' route and two Not now buttons that never render

Evidence (train head 14d06bc)

  • Attention.swift:10-11 and :19 define .home, but nothing raises it. report(…, on:) uses only .dictate and .history (AppModel.swift:249-1338, Views.swift:341, :627). The last .home raise was removed in 7cd3b0a (7 Oct).
  • So WorkbenchHome.swift:808-812 is unreachable.
  • Three places still describe a door and a button that never appear: docs/workbench.md:205 ('Open Home… when the speech model could not be prepared, beside Retry model'), the gallery's door inventory (SurfaceGallery.swift:4461) and WorkbenchPageChecks.swift:90. The panel actually sends a not-ready model to Models (WorkbenchQuickPanel.swift:145).
  • ModelSettingsView.onNotNow (:8-10, :80) is never passed; its only caller is WorkbenchHome.swift:338.
  • FounderIntroductionCard is built only with canDismiss: false (WorkbenchHome.swift:403), so its Not now (FounderIntroduction.swift:89) and dismiss() never run.
  • WorkbenchHomePage.introduction (:557) is never read.
  • Both Not now buttons are registered (docs/surfaces.json:472-476, :5400-5406).

Change

  • Remove case home and delete :808-812.
  • Drop the gallery row at SurfaceGallery.swift:4461, and reword :4462 to 'Open Models…, while speech is not ready, preparing or could not be prepared'.
  • Remove the .home tuple from WorkbenchPageChecks, onNotNow, FounderIntroduction's dismissal state and button, and WorkbenchHomePage.introduction.
  • In docs/surfaces.json, edit by hand (not --update):
    • delete the two entries;
    • retarget the aliasOf of the live Home Not now (:5447) to LocalVoice.MeetingWorkspaceView.MeetingOfferPanelController.Button.not-now. Without this, check-surfaces fails with 'Invalid aliasOf'.
  • Change docs/workbench.md:205 to 'Open Models… while speech is not ready: not downloaded, preparing or could not be prepared'.
2. Declarations nothing references

Evidence. grep -rnw over Sources, Tests and scripts finds only each declaration.

  • StageKitController: hasOverlaySession, areOverlaysPaused and canStepOverlays (:478-480; the first two duplicate :450-451), showBoard (:535), stepOverlaySet and toggleOverlayVisibility (:543-544), performShortcut (:546-549), and quickControlsView (:417). escape() is live (main.swift:211, :282, :708); keep it.
  • ServiceNow install: ReadbackModel.installServiceNowPack (:782-788) wraps ReadbackResources.installServiceNow (:177-180), which always throws, so its success line can never show.
  • AppModel: captureOutputModeLabel and captureShortcutInstruction (:61-62, written at :619-622) and captureDestinationName (:64) are published and never read.
  • PrivatePackKit:
    • maximumPointerBytes and maximumCachedFiles (PackPrimitives.swift:23, :27) are enforced nowhere, although :4 says every bound is.
    • maximumRetainedRevisions (:25) is unused because PackStore.swift:228 hard-codes prefix(3).
    • GitHubPackClient.jsonAccept (:38) is unused because GitHubPackAuthorization.swift:75 repeats the literal.
  • Strays: chooserOffscreenForChecks (CapturePanel.swift:241), sourceReference (SnapStore.swift:115), claudeImagesVerified (SubscriptionCLI.swift:1262), bundledDeckIdentifiers (TranscriptHandoff.swift:92) and isUsable (ToolbarViewState.swift:67).

Change

  • Delete them.
  • Use prefix(PackLimits.maximumRetainedRevisions) and GitHubPackClient.jsonAccept in place of the literals. Both are the same values, so behaviour doesn't change.
  • Keep uninstallServiceNowPack and CaptureSettings.outputLabel, which checks use.
3. Leftovers from the removed More menu and Appearance accessory

Evidence

  • 4355a71 removed the toolbar's overflow menu (docs/floating-toolbar.md:106).
  • These are now used only by checks or tests:
    • ToolbarActiveWork and ToolbarAccessoryMenus (FloatingToolbarState.swift:23-95), asserted at WorkbenchControlChecks.swift:239-259 and :316-356 (for example, 'a hidden card's Appearance waits in More');
    • StageKitController.PersonaShape, personaShape(of:), isPersonaCopyHidden, personaMenuHoldsAppearance and setPersonaShape (:267-295), used in PersonaAppearanceTests.swift:444-560;
    • ToolbarAccessory.appearanceDescription (ToolbarViewState.swift:164);
    • HomePersonaControl.tileVerb (WorkbenchControlTool.swift:249), which Home never shows;
    • CapturePanel.rowSize (:90).
  • Gallery mismatch. In the app, Persona mode returns at FloatingToolbar.swift:179 and shows the set picker. ToolbarCore's copy of the rule returns nil for .session (ToolbarViewState.swift:172-181). So the toolbar gallery's activity-personas render (ToolbarGallery.swift:102) draws no accessory where the app shows Choose set.

Change

  • Delete those symbols.
  • offered(for:) drops its selectedPersonaCopy parameter and returns .personaPicker for .session. Update every caller: FloatingToolbar.swift:180, ToolbarGallery.swift:25 and :70, SurfaceGallery.swift:4151, ToolbarNativeTests.swift:315, :342, :412 and :453, and ToolbarGalleryTests.swift:154-189.
  • Retarget PersonaAppearanceTests to selectedLiveCopy, liveShape(of:) and setLiveShape. Keep its Appearance-menu assertions through a small local helper.
  • Delete PersonaLibrary.liveCopyHidden if nothing else uses it afterwards.
  • Delete the ToolbarAccessoryMenus scan line at scripts/check-surfaces.py:144-145; otherwise check-surfaces reports the owner missing.
  • Reword the stale 'waits in More' comments.
  • Keep PersonaCopy and selectedPersonaCopy, which ToolbarActivityActions.swift:80-82 uses.
Acceptance
  • A release build has no new warnings.
  • swift test (ToolbarCore, ToolbarKit and PrivatePackKit), bash scripts/test-stage.sh --ci, --check-core, --check-floating-toolbar and --check-readback-pack pass.
  • python3 scripts/check-surfaces.py reports 686 entries (688 today), and scripts/test-check-surfaces.py passes.
  • grep -rnw returns nothing for each deleted name, and grep 'Open Home…' docs/workbench.md Sources returns nothing.
  • Toolbar gallery renders are identical, except activity-personas, which gains Choose set.
Value before scope
  1. Outcome: no misleading contract line, registry entry or passing check for a surface nobody can open.
  2. Simpler route: deletion, plus two same-value substitutions.
  3. Owner: as listed.
  4. Complexity: a few hundred fewer lines.
  5. Verified by: the compiler and the existing suites.

Grammar: Codebase.

Refs #279


Build-ready record from the 15 Oct round-three pass (delight and code-base value), verified against the release train head 14d06bc by an independent skeptic per item. Closes only after native acceptance.

Dominant language
Swift
Stars
0
Forks
1
Avg merge
8h 5m
Merged PRs (30d)
215

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Ship-Work/workbench

All issues in Ship-Work/workbench

Similar issues

More Swift issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.