#3948
Awards exceed the 10,000,000 cap once campaign and streak multipliers apply
k23h ago
#3931
Award grants (showcase approval, admin award points) skip campaign/streak multipliers
k1d ago
#3932
Disable the inbox notification email ("You have received a notification in Swamp Club")
k1d ago
#3930
Add LinkedIn as a login provider
1d ago
#3929
Showcase reward backfill can double-pay 5,000,000 points when replicas start together
1d ago
#3928
Showcase editor: caption counter is not announced to screen readers
1d ago
#3927
Profile showcase read: approved list sorts on review.reviewedAt in memory
1d ago
#3926
Showcase countByStatus: $match live statuses before the $group
1d ago
#3925
Showcase admin queues: index-serve the updatedAt sort on approved/rejected
1d ago
#2077
Block temporary email services on signup
s7d ago
#3523
auth login leaves auth.json apiKey empty and stores the key only in ~/.config/swamp/api-key, which the auth gate never reads
11d ago
#3430
swamp-club.com serves every response uncompressed
11d ago
#3406
CLI companion to #3396: private-source collectives can score repository-verified 14/14 in extension quality
s12d ago
#3102
Replayable state fragments: Git-reviewable desired state for resources changed by model methods
6d ago
#1545
Use whoami entitlement to explain private-extension push refusals
s20d ago
#2826
Top-level swamp init never earns repo-init quest or tier credit
s24d ago
#2828
Docs: telemetry reference — the envelope we send and our redaction policy
k25d ago
#2831
Telemetry opt-out scope: one user-level setting that disables telemetry everywhere
s26d ago
#2830
Telemetry: mark paths where errors are built so redaction needs no guessing
s26d ago
#2835
Combat log: batch the extension visibility lookup into one query
k26d ago
#2817
CLI telemetry redaction: user values still transmitted (errorMessage, workflowContext, init path, history args, private types) while command words are over-redacted
k26d ago
#2565
Maximum call stack size exceeded once a resource passes ~129k versions (Math.max(...versions) in the data repository)
s29d ago
#2193
worker connect --ca-cert is not applied to the data plane; dispatches fail with 'fetch failed' unless DENO_CERT is set
z1mo ago
#2192
Ephemeral worker fleets accumulate worker records and token bindings that are never reaped
s1mo ago
#2191
Expired enrollment token cannot be re-minted unless a worker was connected when it expired
s1mo ago
#2232
Billing telemetry: surface scheduled cancellations (cancelAtPeriodEnd) and emit subscription_canceled reliably
1mo ago
#2195
access token mint: support --server so worker server tokens can be minted remotely
s1mo ago
#2196
Workload identity (Kubernetes ServiceAccount / OIDC) for worker enrollment
1mo ago
#2147
Feed grant projection stamps a site route that does not exist
1mo ago
#2027
Retire or rebuild /admin/nurture once the epic lands — it is a gate, and gates are single-use
1mo ago
#2012
feat(nurture): /admin/nurture — who would get what, and why
k1mo ago
#2011
feat(nurture): the nurture_send ledger and the dry-run projector, with the cold-start seal
k1mo ago
#2010
feat(nurture): batch cohort reads — account-grain identification that carries its evidence
k1mo ago
#2009
feat(nurture): the flow catalog and the qualification contract (pure domain)
k1mo ago
#2025
harness-marketing-funnel posts {batch:[...]} to /ingest, which is not a batch — every run silently measures zero
1mo ago
#2024
feat(cli): swamp inbox — read swamp-club notifications without leaving the terminal
1mo ago
#2023
feat(cli): tell operatives they have swamp-club notifications waiting
1mo ago
#2022
feat(api): a cheap unread-notification count for API-key clients
1mo ago
#2021
feat(nurture): deliver to the swamp-club inbox on the same dedupe decision as email
1mo ago
#2020
feat(nurture): arm needs-help-after-a-failed-run (NEEDS HELP)
kBlocked1mo ago
#2019
feat(nurture): arm model-usage-without-workflows (BUILDING PRODUCT FEATURES)
kBlocked1mo ago
#2018
feat(nurture): arm no-activation-after-30-days (ARRIVED, NEVER RAN)
kBlocked1mo ago
#2017
feat(nurture): arm reactivation-after-7-days (DRIFTED)
kBlocked1mo ago
#2016
feat(nurture): arm the first flow — extension published, email only, verified in prod
kBlocked1mo ago
#2015
feat(nurture): the six nurture email templates, previewed before anything sends
k1mo ago
#2014
feat(nurture): an outbound transport that reports its outcome, and per-channel send status
k1mo ago
#2013
feat(nurture): suppression — opt-out, address-grain frequency caps, one-click unsubscribe
k1mo ago
#2008
Epic: Product nurture — lifecycle identification, dedupe-safe delivery, and operator control (email, inbox, CLI)
1mo ago
#2001
SSO: SAML assertion attributes are never logged or persisted — cannot tell whether the IdP sent groups
k1d ago
#1819
IdP group memberships go stale indefinitely — user.idpGroups is only written by the SSO login hook
s1mo ago
#1961
Extension version binaries never persisted — binaries security notice has never rendered
ks4m ago
#1884
Genesis "New Blood" (recruit_first) only counts collective invites — a platform invite can never complete it
k1mo ago
#1821
SCIM 2.0 provisioning endpoint for swamp-club (Users + Groups, deprovision)
2mo ago
#1820
SSO user profile fields are frozen at first login — overrideUserInfo is never set on any provider
2mo ago
#1805
@swamp/s3-datastore disables IMDS on plain EC2, so an attached instance profile cannot resolve
s2mo ago
#1804
AWS credential handling is duplicated across five implementations — the #803 preflight and the #226/#228 SSO hints reached only one of them
s2mo ago
#1813
A subscription stuck in incomplete has no path forward: it grants nothing, and the billing page offers no way to finish paying
2mo ago
#1812
Identifier lookups are exact-match and case-sensitive across username, email and slug
2mo ago
#1811
Invite failures emit no telemetry, so a rejected invitation leaves no trace anywhere
2mo ago
#1810
Collective invitations expire after 48h and the auto-claim is gated on that window, so a late signup is never bound
2mo ago
#1809
Invite typeahead searches username prefix only, so an operative cannot be found by name or email
2mo ago
#1806
Send the release headline from the release pipeline so New Release announcements say what shipped
2mo ago
#1572
Epic: /leaderboard and /u/{username} do not survive 10B events — measured audit + phased plan
2mo ago
#1255
Reconcile collective-token CLI activity to members (attribute → bonus → stamp → even-split)
2mo ago
#1800
deps-audit skips deno-runner and agent-runner lockfiles in ci.yml
2mo ago
#1665
Sync every signup to Attio, and backfill the existing population (#809 follow-up)
k2mo ago
#1669
@swamp/issue-lifecycle probes /api/health, which swamp-club stopped serving when the Fresh scaffold stubs were removed
2mo ago
#1668
Lab lifecycle POST rejects any payload string that starts with a dollar sign, not just operator keys
2mo ago
#1497
Push down the two cheap leaderboard scans: ghost-gate dictionary and eventCounts owner filter
k2mo ago
#967
$identify events are never consumed — anonymous web history never binds to the account
k2mo ago
#1667
Finish the swamp_* attribute set on Attio users, and settle the two unprefixed ones (#809 follow-up)
2mo ago
#1666
aria-expanded is a raw boolean in 12 places — collapsed state is unannounced to screen readers
2mo ago
#1658
One standing read: every scalar score consumer reads board_totals, not the ledger
k2mo ago
#1657
Profile Edit trigger is a fire-and-forget island: no aria-expanded, and a silent no-op if the editor island does not hydrate
k2mo ago
#1654
Profile XP bar jumps ~25px on fill, and pays the full cumulative walk for two numbers board_totals already holds
k2mo ago
#929
Incremental activity projector + swamp.events username bloom index (spun off #925, stages 5+7)
k2mo ago
#1254
Telemetry stats consumer: insert_id dedup commits before the write it guards — any upsert failure is silently swallowed on retry
k2mo ago
#1598
score-rollup projector runs N× per cadence — the run gate is per-replica memory, not shared state
k2mo ago
#1579
Leaderboard board windows re-anchor on wall-clock while the rest of the view is frozen at asOf
k2mo ago
#1663
swamp CLI: surface the audience and resolvedInVersion fields swamp-club now serves
s1mo ago
#1662
ApiKeyManager's collapsed trigger points aria-controls at an element it never renders
2mo ago
#1661
A boolean aria-expanded renders as no aria-expanded: two disclosure widgets report no state to a screen reader
2mo ago
#1651
Ripple redaction rewrites HTTP status-code runs as phone numbers, silently corrupting evidence
s2mo ago
#1503
Profile score section blocks the render on a ClickHouse read
k2mo ago
#1204
Collective invite emailed-link return path is dropped: /accept-invite sends ?returnUrl= but /login reads ?redirect=
k2mo ago
#1653
Tell the inviter when a collective invite mis-lands, instead of leaving it pending forever
2mo ago
#1504
Ghost profile bypasses the score-read seam and 500s on a slow ledger
k2mo ago
#1589
A ledger read failure still renders as 'no activity': loadProfileScore swallows to an empty standing behind HTTP 200
k2mo ago
#1620
Model lookup misreports EMFILE (too many open files) as a broken definition file and dumps a raw stacktrace
s2mo ago
#1605
serve telemetry identity warnings are diagnostic but not actionable — say how to fix them
s2mo ago
#1588
swamp quest: drop the heartbeat field the server no longer sends
s2mo ago
#1604
Daemon telemetry flush: stop() can skip its final flush when a timer drain is already in flight
s2mo ago
#1607
Guard the projector's full rewrites against the fail-open lease (ADV-6 from #1575/#1576)
k2mo ago
#1606
Projector write amplification: board_totals/owner_devices full rewrites are owners × runs/day
k2mo ago
#1576
Profile candidateIds prune costs a full ledger scan to build itself — 42.88M rows for one keyed read
k2mo ago
#1575
Leaderboard phase 3: owner-grain board_totals so a cache miss is survivable at 10B
k2mo ago
#1591
swamp serve is telemetry-dark: scheduled workflow runs never reach /ingest, and the daemon never flushes
k2mo ago
#1603
CLI has never sent insert_id: retried telemetry batches are double-counted into cli_daily, inflating XP in an append-only ledger
2mo ago
#1581
Catalog backfill reconciles against the local cache, not the datastore
s2mo ago
#1599
dailyHistory range pushdown — deferred from #1576, and the measurement says why
k2mo ago
#1597
Docs: manual never mentions telemetry, and the serve/scheduling pages imply automated runs are visible when they are not
26d ago
#1574
Leaderboard phase 2: take score_grants off the board read path — read today from score_daily
k2mo ago
#1586
Profile day drill-down returns 0 entries at the 5s ClickHouse ceiling for every operative
k2mo ago
#1582
reconcile_from_disk_bench.ts fails deno check (stale DenoRuntime stub)
s2mo ago
#1573
Leaderboard phase 1: cache the board read and bust it on tier crossings (no schema change)
k2mo ago
#1580
Catalog backfill deletes rows for any model whose data names are numeric
k2mo ago
#1583
Docs: document catalog completeness check and --repair in doctor reference
2mo ago
#1577
Leaderboard phase 5: score-rollup-projector write cost at 10B — ~430M rows scanned per 60s tick
k2mo ago
#1544
swamp auth whoami should report paid tier and trial status
k2mo ago
#1496
Split the score-read circuit breaker so leaderboard pressure can't blank profile scores
k2mo ago
#1475
oauth_sign_in telemetry records provider as the literal ":id" for every event
k2mo ago
#881
Council: set the scoring balance — command tiers, farm-decay parameters, cross-category ratio
2mo ago
#880
Scoring coverage gaps: instrument drop-off, score ripples/mentions, reward invite-converts
2mo ago
#1495
Materialize an active-days-by-id table for the streak board
s2mo ago
#1494
score-rollup-projector: O(all-time ledger) closure + per-pod fan-out saturates prod ClickHouse CPU
k2mo ago
#1486
swamp auth server-login ignores SWAMP_SERVE_URL
s2mo ago
#1478
serve oauth: an unrecognized device-token error kills the whole serve process instead of the bootstrap
s2mo ago
#1482
CLI reports 'HTTP/2 not supported by this client' when the server actually returned 401 — masks auth failures as a transport error
s2mo ago
#1477
serve oauth: startDeviceGrant discards the OAuth error field, making device-code failures undiagnosable
s2mo ago
#1476
serve oauth bootstrap: device flow rate-limited to a 45-second window by validateClient counter, shared globally across tenants
k2mo ago
#1376
CLI: swamp invite <email> to drive the platform-invite API
s1mo ago
#1337
Hide enterprise (SSO) operatives from announcements and leaderboard by default
k3mo ago
#1294
Expose the swamp.club feed as an RSS feed
k3mo ago
#1246
Docs: manual should state workflow unknown keys are rejected and placement is step-only (follow-up to #1240)
s3mo ago
#1276
ExtensionInfo.latestVersion typed 'string' but registry returns null; harden pull/resolve for prerelease-only extensions
s3mo ago
#1256
Profile stats: per-user daily rollup table + MV in ClickHouse
k2mo ago
#1235
CLI telemetry: fold third-level verbs into subcommand + canonicalize aliases
2mo ago
#1229
Docs: swamp skill repo-structure reference still documents repo-local .swamp/telemetry/ as live
s3mo ago
#1129
Docs: document user-global telemetry (telemetry.yaml opt-out, spool location, telemetry stats behavior)
s3mo ago
#1082
score_daily rollup strands stale grains when a day-less grant re-stamps onto a later day
k3mo ago
#1093
swamp-club: global rate limiter runs pre-auth and collapses all direct clients into one per-IP bucket — 429s authenticated CLI traffic
k3mo ago
#958
feed_post_score_events queue grows unboundedly (no TTL, no delete-on-delivery)
k3mo ago
#954
@-mention autocomplete for users when writing lab ripples
k3mo ago
#959
Remove comments from /feed and redesign the page
k3mo ago
#875
Score-refresh consumer: harden coalescing against a diverse backlog (bistability)
k3mo ago
#844
Remove feed comments — consolidate discussion in Discord
k3mo ago
#956
Relax the profanity filter
k3mo ago
#736
Extension search returns edit-distance noise for short queries ("asdl" → "AWS DEADLINE")
k3mo ago
#828
Telemetry recoverOrphaned startup race with multiple replicas (created_at-based)
k3mo ago
#827
Telemetry retry/failed path has the same non-atomic claim as #820
k3mo ago
#1205
Dead code: CollectivesSection island (pending-invite prompt) is never mounted; listPendingInvitationsByEmail has no production consumer
2mo ago
#1125
Telemetry silently dropped outside a swamp repo — lost events + undercounted scores
k3mo ago
#1120
serve: create*Deps() factories leak file-based catalog stores (3 FDs) per API request
k3mo ago
#1121
flaky test: manual_approval suspension test leaks 3 timers (OTel InMemorySpanExporter setTimeout)
k3mo ago
#1123
flaky test: serve OAuth client tests leak unconsumed fetch response bodies (+ connection_test readDir leak)
k3mo ago
#1118
serve leaks file descriptors (EMFILE) — runFileSink.unregister runs after yield, not in finally
k3mo ago
#1092
swamp-club: /api/whoami 500s on fresh install — ensureIndexes {id:1} conflicts with migration 012 id_lookup index
k3mo ago
#1091
data prune --json omits reclaimedModels[].modelName when a report entry is grouped first
k3mo ago
#1083
One-time prod data checks: github:-authored lab issues blast radius + legacy uppercase extension names
3mo ago
#1058
Serve leaderboard locate ('find yourself') live, retiring its per-replica standings cache
k3mo ago
#1055
Serve leaderboard live from the score_daily rollup — retire per-pod snapshot & campaign-blind board fallback
k3mo ago
#1012
Docs: document swamp data prune (orphaned-data reclamation)
s3mo ago
#1011
UAT: CLI coverage for swamp data prune (orphaned-data reclamation)
3mo ago
#978
Leaderboard search excludes ghosts — a visible ghost can't be found by its alias
k3mo ago
#973
issue-lifecycle: plan lifecycle entry silently dropped when summary exceeds 1000 chars
s3mo ago
#957
Make paid subscribers visually stand out (badge, profile popup summary)
3mo ago
#955
Giphy integration via /giphy command
k2mo ago
#950
/lab shipped list is sorted by issue number, not ship date
k3mo ago
#924
Collscan/index-gap pack: unindexed $or id branches (every registry request), computed-field sort kills extension browse indexes, $expr blocks pull counts, apikey.userId, workflow_runs, 1100-doc profile fetch
k3mo ago
#926
Request-path external fetches with no timeout / no negative cache: profile GitHub/Discord resolution and landing-page total count (30s → 504 mechanism)
k3mo ago
#921
Auth hot path: 7 serial Atlas round trips per API-key request; session cookie cache dies after 5 min; session/apikey lookups unindexed
k3mo ago
#923
Leaderboard: window boards are unindexed full-collection aggregations ×4 per locate miss; locate fetches 4×10k rows to rank one user; search() has O(sum-of-ranks) lookup fan-out
k3mo ago
#922
/lab loads every issue with full markdown bodies on every request (incl. detail pages) + ~12 serial DB waves — the 3.4s avg / 30s tail
k3mo ago
#927
Activity projector runs on both telemetry replicas — same-day chunks can double-grant (grant_id collides but granted_at differs, ReplacingMergeTree never dedups)
3mo ago
#872
Activity heatmap clips the current UTC day — uses local browser time for "today" but snapshots are UTC-keyed
s3mo ago
#854
Epic #847 · Unit 2: score_grants append-only ledger write-model in Mongo (shadow, no read flip)
k4mo ago
#862
feat(clickhouse): tracked archive→CH backfill tooling (backfill.sql)
4mo ago
#861
feat(clickhouse): idempotent DDL migration path for running prod (#859 deliverable 2)
4mo ago
#860
chore(clickhouse): retire S3-backed v1 + s3 objects after #859 cutover
4mo ago
#859
Decouple prod ClickHouse from S3 (drop storage_policy=s3_main) + add a DDL migration path
4mo ago
#853
Epic #847 · Unit 1: Land the ClickHouse projection foundation (schema + init SQL + compose service)
k4mo ago
#850
Extension publish score is non-monotonic: yanking versions lowers a user's score
k3mo ago
#849
Live Swamp Club event console on /feed — scrolling stream of all non-sensitive events
2mo ago
#820
Telemetry watcher has no replica coordination: N replicas double-process the same batch (non-atomic find→updateMany claim)
k4mo ago
#819
Telemetry drain still capped ~80-100/s in prod: per-username full-history re-aggregate is O(users) sequential per batch (deferred #817 fix #4)
k4mo ago
#817
Telemetry ingest is consumer-bound: counter & stats dedup via O(N) sequential insertOne, throughput stuck ~20 events/s regardless of BATCH_SIZE
k4mo ago
#804
Batch step 2 of enrichAuthorPlans (per-collective subscription reads)
3mo ago
#802
Add SWAMP CLUB wordmark logo next to sc-mark.png in TRADEMARKS.md
k4mo ago
#719
Docs: document trigger.inputs for scheduled/webhook workflows in the manual
k4mo ago
#729
serve --webhook usage string makes <header> look optional for generic scheme
s4mo ago
#789
Leaderboard window baseline: 90-day cutoff zeroes returning-dormant users (latent, 0 impact today)
3mo ago
#737
Yank semantics inconsistent: all-versions-yanked acts as a free hidden/private extension; extension-level yank hard-blocks re-push
s4mo ago
#728
serve: webhook scheme not surfaced in startup event, health endpoint, or log line
s4mo ago
#726
Slack webhook pre-body gate only checks signature header, not timestamp
s4mo ago
#725
Dead code: verifySignature in webhook.ts superseded by verifier abstraction
s4mo ago
#723
Data-driven webhook signature verifiers (avoid a code change + release per provider)
4mo ago
#709
Replace third-party trademark symbol with Swamp Club (SC) mark in TRADEMARKS.md
k4mo ago
#650
datastore setup migration relocates and deletes repo-root .swamp/secrets, breaking all local_encryption vault.get
s4mo ago
#649
Registry content-type search filter can match versions absent from the displayed extension
s4mo ago
#648
Docs: document reports.require failure semantics in the manual (unresolvable required report fails the run)
s4mo ago
#645
Resource-leak test failures on main: extension_rubric_scorer_test and worker_gateway_test
s4mo ago
#635
Tier-up announcements never fire for direct score contributions (badge awards, feed credits)
k4mo ago
#507
Feed-post scoring is a direct domain write, not a consumer of feed_post_approved telemetry
k4mo ago
#492
reindexByUsername re-strands pre-association history and wipes sign_in_dates
k4mo ago
#573
extension search returns null repository fields that extension info populates
s4mo ago
#509
Docs: TLS behind inspecting proxies / private CAs (system trust store, DENO_CERT, SSL_CERT_FILE)
4mo ago
#501
username_metrics projection backfill does not trigger re-scoring (stale UserScore for dormant users)
3mo ago
#491
Telemetry never retroactively credits a device's pre-association history
k4mo ago
#448
Telemetry admin reindex endpoint is gated on a defunct @systeminit.com email domain — permanently 403
s5mo ago
#445
extension update/pull deadlocks when the repo's datastore is the extension being updated
s5mo ago
#447
CLI telemetry forwards non-personally-resolvable identity for collective auth; distinct_id is per-machine, not per-repo
k5mo ago
#446
Telemetry ingest only resolves personal API keys — collective-token events are unattributed, identity_map under-claims
k4mo ago
#430
--json output is polluted by non-JSON content, breaking machine parsing
s5mo ago
#424
swamp serve: extension bundle failure at startup is silently pinned, breaking scheduled workflows with permanent 'Unknown model type'
k5mo ago
#413
Harness detection invents env vars for kiro/opencode/codex
k5mo ago
#393
Extension METHODS table truncates Method column; short names like apply/check wrap mid-word on /extensions/@swamp/ssh
s5mo ago
#392
swamp extension rm leaves empty <kind>-bundles/<hash>/ dirs behind
s5mo ago
#383
`swamp extension rm` leaves empty scaffold dirs behind
k5mo ago
#384
identity_map row not updated when user renames
s5mo ago
#362
Unified login input that detects email vs username by presence of '@'
k5mo ago
#361
Introduce `swampd`: long-running local daemon for shared cache, secrets, and extensions
3mo ago
#338
Step key parsing in execution_service uses naive split(":") and silently truncates colon-containing step names
k5mo ago
#337
Workflow-scope report artifacts unreachable via `swamp data get --workflow`
k5mo ago
#312
telemetry: emit child entries for follow-up action method invocations
s5mo ago
#301
Per-method telemetry events for workflow runs
k5mo ago
#293
Award leaderboard points for referrals and collective invites
2mo ago
#292
Add agent harness detection and AiTool to telemetry
k5mo ago
#280
Missing unique indexes on user.email and user.username allow duplicate users
k5mo ago
#282
Local extension edits don't reliably trigger rebundle
5mo ago
#278
discord-bot double-sends sign_up notifications
k5mo ago
#277
Discord bot sends duplicate signup notifications
5mo ago
#232
Extend DatastoreSyncService.markDirty() with optional relPath argument
k5mo ago
#215
Adversarial UAT test: missing cached bundle with intact catalog should self-recover
5mo ago
#214
Port importBundleByPath ENOENT fallback to datastore/driver/vault/report loaders
5mo ago
#192
swamp-club extension card no longer exposes @ns/slug as contiguous text
k5mo ago
#170
Docs: repository-configuration.md missing defaultDriver / defaultDriverConfig
ks5mo ago
#178
Better Auth rejects requests on hostnames not in hardcoded trustedOrigins (signup/signin broken on non-canonical hosts)
k6mo ago
#96
Persist lab filter selection in localStorage
k6mo ago
#169
Server-side parse query params on /lab/all so refresh preserves multi-filter URLs
k5mo ago
#165
cleanup for repoDriver
kj6mo ago
#159
Add repo-level `defaultDriver` to `.swamp.yaml`
k6mo ago
#143
First-class jsr: specifier support in extension bundler
s6mo ago
#97
Inline editing: click-to-edit fields instead of pencil icons
ks6mo ago
#142
Cross-extension code sharing via manifest exports field
6mo ago
#122
Footer floats when page content is shorter than viewport
s6mo ago
#110
Remove traffic lights in column 2 of /lab
ks6mo ago
#101
Flow modal: text rendering issues
k6mo ago
#106
Bog flow: text rendering and layout issues
k6mo ago
#109
Multi-select combo filtering on /lab
k6mo ago
#112
Filter lab issues by author (opened by user)
k6mo ago
#113
Usernames aren't linked to their profile pages
k6mo ago
#114
Collapsible left rail and repositionable right rail in Lab
k6mo ago
#115
'Assigned to me' overlaps 'Privacy policy' on short viewports
s6mo ago
#84
Consolidate MethodReportContext construction — manual and workflow report paths build contexts divergently
s6mo ago
#108
data gc skips version-count GC when no lifetime-expired data exists
k6mo ago
#98
Description 'Show more' button appears even when text fits
k6mo ago
#99
Normalize text sizing across issue list and detail views
k6mo ago
#107
Content filter should identify the flagged word or phrase
k6mo ago
#90
Audit: modelRegistry.get() without ensureTypeLoaded() in YAML repository save() paths
s6mo ago
#91
Vault CEL expressions replaced with VaultSecretBag sentinels after model type upgrade
k6mo ago
#86
issue-lifecycle models should support --assignee for swamp.club issues
s6mo ago
#89
Cross-model expression validator fails on lazy-loaded types — modelRegistry.get() bypasses ensureTypeLoaded
6mo ago
#35
Consolidate method execution paths — workflow steps and manual runs build MethodContext divergently
k6mo ago
#33
CatalogStore constructor runs createSchema before migrateIfNeeded; v1→v2 upgrade fails on existing repos
a6mo ago
← Back to list4/21/2026, 7:49:18 PM
01Issue
FeatureShippedSwamp ClubPublic
Relationships
#97 Inline editing: click-to-edit fields instead of pencil icons
Opened by keeb · 4/13/2026· Shipped 4/21/2026
Problem
Every editable field in the app (issue title, body, comments, profile fields, admin metadata) requires clicking a pencil icon to enter edit mode. This adds an extra click to every edit and clutters the UI with pencil icons. It should feel more like Notion — click the content itself and start editing.
Current behavior
Pencil icons gate editing across the app:
- Issue title (
LabIssueDetail.tsx) — pencil toggleseditingTitlesignal, swaps text for input - Issue body (
LabIssueDetail.tsx) — pencil toggleseditingBodysignal, swaps markdown for textarea - Comments (
LabIssueDetail.tsx) — pencil on each comment toggles inline textarea - Issue type & source (
LabIssueDetail.tsx, admin-only) — pencil toggles select dropdowns - Assignees (
LabIssueDetail.tsx, admin-only) — pencil toggles multi-select picker - Profile fields (
ProfileEditor.tsx) — pencil expands the entire edit form (name, bio, website, etc.)
All use Preact signals as boolean toggles (editingTitle, editingBody, editingCommentId, etc.) to swap between display and edit views.
Proposed solution
Replace the pencil-to-edit pattern with click-to-edit on the content itself:
- Text fields (title, comment body): clicking the text focuses an inline input/textarea. Show a subtle hover state (cursor change, faint border or underline) to signal editability.
- Issue body: clicking the rendered markdown switches to the textarea editor. A hover indicator (e.g. faint outline) hints that it's editable.
- Dropdowns (type, source): clicking the badge/label opens the select inline. No pencil needed.
- Assignees: clicking the assignee section opens the picker.
- Profile: clicking individual fields makes them editable inline rather than expanding a full form.
Key considerations:
- Respect existing permission checks (
canEdit,isAdmin, comment author) — only show the editable hover state for users who have permission - Keep keyboard support (Enter to save, Escape to cancel)
- Read-only users should see no hover affordance — fields look static
- Mobile: tap-to-edit should work the same way; consider slightly larger tap targets
Alternatives considered
- Keep pencils but add click-to-edit as well: Redundant UI, defeats the purpose
- Double-click to edit: Less discoverable than single-click with hover hints
02Bog Flow
Shipped
Click a lifecycle step above to view its details.
03Sludge Pulse