Skip to content

Developer Experience Improvements - Feedback from Real-World Usage #30

@paulgnz

Description

@paulgnz

Developer Experience Improvements

Feedback and suggestions based on real-world development experience building Proton.Link and related smart contracts (protonwall, protonrating).


1. WebAuthn Key Support - Clear Error Message (High Priority)

Issue: WebAuthn keys (PUB_WA_*) cannot sign transactions from the CLI, but there's no clear error message explaining this.

Current behavior:

proton action mycontract myaction '{}' myaccount
# Fails silently or with cryptic error when account uses WebAuthn key

Suggestion:

  • Add clear error message: "WebAuthn keys cannot sign from CLI. Please add a K1 key to your account's active permission."
  • Document this limitation prominently in CLI help/docs
  • Consider adding proton key:check <account> command to verify if account can sign from CLI

2. Misleading Success/Error Messages (Medium Priority)

Issue: Some commands show error messages even when they succeed.

Example encountered:

proton contract:set protonrating ./assembly/target
# Output: "Error: Inline actions already enabled"
# But contract was actually deployed successfully

Suggestion:

  • Distinguish between warnings and errors
  • Show clear success message with transaction ID when deployment succeeds
  • Format: ✓ Contract deployed successfully (tx: abc123...)

3. RAM Purchase Syntax (Low Priority)

Issue: The ram:buy command syntax for authorization isn't intuitive.

What I tried:

proton ram:buy account account 150000 account@active  # Failed

What worked:

proton ram:buy account account 150000 -p account@active  # Success

Suggestion:

  • Accept both positional and flag-based authorization
  • Or update help text to clearly show -p is required
  • Consider making authorization optional and defaulting to the payer account

4. Multi-Contract Context Safety (High Priority)

Issue: When working with multiple contracts, it's easy to accidentally deploy to the wrong account.

Suggestion: Add safety features:

# Option 1: Confirmation prompt
proton contract:set protonrating ./target
> You are about to deploy to 'protonrating'. Continue? [y/N]

# Option 2: Contract-account binding in config
proton config:bind ./protonrating-contract protonrating
# Then warn if deploying from wrong directory

# Option 3: Show current "active contract context"
proton contract:context
> Current: protonrating (last deployed 2h ago)

5. Additional Nice-to-Haves

Table Query Output Formatting

proton table protonrating ratings --format=table  # ASCII table
proton table protonrating ratings --format=json   # Current default
proton table protonrating ratings --format=csv    # For exports

Transaction History Command

proton history <account> --limit=10
# Shows recent actions performed by/on account

Dry Run Mode

proton action mycontract transfer '{"from":"a","to":"b","quantity":"1.0000 XPR"}' sender --dry-run
# Output: Would transfer 1.0000 XPR from 'a' to 'b'
# Estimated CPU: 250 µs, NET: 128 bytes

Summary

Suggestion Priority Impact
WebAuthn key error message High Saves hours of debugging
Multi-contract safety High Prevents costly mistakes
Better success/error distinction Medium Reduces confusion
RAM purchase syntax Low Minor friction

Happy to discuss any of these further or contribute PRs if there's interest!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions