Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(examples): p/leon/pkgerr #3738

Merged
merged 11 commits into from
Mar 7, 2025
Merged

feat(examples): p/leon/pkgerr #3738

merged 11 commits into from
Mar 7, 2025

Conversation

leohhhn
Copy link
Contributor

@leohhhn leohhhn commented Feb 12, 2025

Description

Adds a simple package to make your Gno errors match your realm path.

Go wizards tell me if I'm doing something wrong 🙏

@Gno2D2 Gno2D2 requested a review from a team February 12, 2025 14:09
@Gno2D2
Copy link
Collaborator

Gno2D2 commented Feb 12, 2025

🛠 PR Checks Summary

All Automated Checks passed. ✅

Manual Checks (for Reviewers):
  • IGNORE the bot requirements for this PR (force green CI check)
Read More

🤖 This bot helps streamline PR reviews by verifying automated checks and providing guidance for contributors and reviewers.

✅ Automated Checks (for Contributors):

🟢 Maintainers must be able to edit this pull request (more info)
🟢 Pending initial approval by a review team member, or review from tech-staff

☑️ Contributor Actions:
  1. Fix any issues flagged by automated checks.
  2. Follow the Contributor Checklist to ensure your PR is ready for review.
    • Add new tests, or document why they are unnecessary.
    • Provide clear examples/screenshots, if necessary.
    • Update documentation, if required.
    • Ensure no breaking changes, or include BREAKING CHANGE notes.
    • Link related issues/PRs, where applicable.
☑️ Reviewer Actions:
  1. Complete manual checks for the PR, including the guidelines and additional checks if applicable.
📚 Resources:
Debug
Automated Checks
Maintainers must be able to edit this pull request (more info)

If

🟢 Condition met
└── 🟢 And
    ├── 🟢 The base branch matches this pattern: ^master$
    └── 🟢 The pull request was created from a fork (head branch repo: leohhhn/gno)

Then

🟢 Requirement satisfied
└── 🟢 Maintainer can modify this pull request

Pending initial approval by a review team member, or review from tech-staff

If

🟢 Condition met
└── 🟢 And
    ├── 🟢 The base branch matches this pattern: ^master$
    └── 🟢 Not (🔴 Pull request author is a member of the team: tech-staff)

Then

🟢 Requirement satisfied
└── 🟢 If
    ├── 🟢 Condition
    │   └── 🟢 Or
    │       ├── 🟢 At least 1 user(s) of the organization reviewed the pull request (with state "APPROVED")
    │       ├── 🟢 At least 1 user(s) of the team tech-staff reviewed pull request
    │       └── 🔴 This pull request is a draft
    └── 🟢 Then
        └── 🟢 Not (🔴 This label is applied to pull request: review/triage-pending)

Manual Checks
**IGNORE** the bot requirements for this PR (force green CI check)

If

🟢 Condition met
└── 🟢 On every pull request

Can be checked by

  • Any user with comment edit permission

@github-actions github-actions bot added the 🧾 package/realm Tag used for new Realms or Packages. label Feb 12, 2025
@leohhhn leohhhn mentioned this pull request Feb 14, 2025
6 tasks
Copy link

codecov bot commented Mar 6, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

📢 Thoughts on this report? Let us know!

@leohhhn leohhhn marked this pull request as ready for review March 6, 2025 05:27
@Gno2D2 Gno2D2 added the review/triage-pending PRs opened by external contributors that are waiting for the 1st review label Mar 6, 2025
Copy link
Member

@moul moul left a comment

Choose a reason for hiding this comment

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

I cannot determine whether this pattern is the best or the worst; however, I can say that it deserves to exist and that some people may want to use it.

FYI, I am like you considering providing libraries to improve the error handling experience and also introducing std.GetContext().CurrentFileAndLine().

@Gno2D2 Gno2D2 removed the review/triage-pending PRs opened by external contributors that are waiting for the 1st review label Mar 6, 2025
Copy link
Member

@thehowl thehowl left a comment

Choose a reason for hiding this comment

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

nice

@thehowl thehowl merged commit ac5584b into gnolang:master Mar 7, 2025
61 checks passed
@leohhhn leohhhn deleted the pkgerr branch March 7, 2025 17:55
matijamarjanovic added a commit to matijamarjanovic/gno that referenced this pull request Mar 17, 2025
commit b2d157ecb62f5a0ed12e6dea6f66b1cb3606baa5
Merge: d2a32396 ec866301
Author: matija marjanovic <[email protected]>
Date:   Mon Mar 17 23:29:46 2025 +0100

    Merge branch 'master' into feat/token-hub

commit d2a32396655e7ae3a9d1de115c3b431a5b602af5
Author: matijamarjanovic <[email protected]>
Date:   Mon Mar 17 23:16:26 2025 +0100

    - remove unneeded comment
    - render touchups for better code readability & efficency
    - rm unneccessart back to home links bc of existance of breadcrumb

commit 6e0a23305cb97daf8e0de5078a4cb2a96cb199cd
Author: matijamarjanovic <[email protected]>
Date:   Mon Mar 17 23:02:44 2025 +0100

    update the realm with non-depricated version of namespace registry r/sys/users

commit ec866301dd3ba0d6171213cc59eb09c9e86f07e0
Author: Jeff Thompson <[email protected]>
Date:   Mon Mar 17 16:44:56 2025 +0100

    fix: stdlibs/os: func Sleep doesn't return a value (#3957)

    Running `make test.components` gives the error:
    ```
    testing/testing.gno:6:2: could not import os (os/os.gno:24:9: sleep(int64(duration)) (no value) used as value) (code=4)
    ```

    To fix: PR https://github.com/gnolang/gno/pull/3677 added the [Sleep
    function](https://github.com/gnolang/gno/blob/5e017a4e7d89827203c11c6642f844f0fd75a070/gnovm/tests/stdlibs/os/os.gno#L23-L25):
    ```
    func Sleep(duration time.Duration) {
    	return sleep(int64(duration))
    }
    ```

    But `sleep` doesn't return a value. This PR removes `return`.

    Signed-off-by: Jeff Thompson <[email protected]>

commit 5e017a4e7d89827203c11c6642f844f0fd75a070
Author: Lee ByeongJun <[email protected]>
Date:   Sat Mar 15 02:29:32 2025 +0900

    feat(cmd): `gno mod` module name validations (#3526)

    closes #3493

    Added module path validation to prevent invalid characters from being
    written to `gno mod` parsing phase.

    The validation:
    1. Checks for non-ASCII characters
    2. Validates against specific invalid characters (``, ", \, ?, *, :, <,
    >, |, [, ]`)
    3. Prevents spaces and control characters
    4. Ensures the module path is not empty

    ---------

    Co-authored-by: Morgan Bazalgette <[email protected]>

commit a53c05d4f4bc4f7ed55fd9f078adbab35c4ce12c
Author: Rémi BARBERO <[email protected]>
Date:   Fri Mar 14 17:47:57 2025 +0100

    feat: refactor r/gnoland/valopers to remove `r/sys/validators` dependency (#3830)

    fixes https://github.com/gnolang/gno/issues/3567

    Objectives:

    - [x] The `/r/gnoland/valopers` should not have the dependency on
    `/r/sys/validators`. So a new realm will do the glue between the
    `valopers` realm and the `validators` valset.
      - [x] remove dependency
      - [x] write glue contract
      - [x] write glue contract tests
    - [x] As an admin, I can edit the instructions to register a new
    valoper, espacially for what to put in the description field. So a
    public function is needed to update the instructions and an
    administration mechanism to restrict calls.
    - [x] Change the API to be able to call valopers' functions directly
    with a JS frontend (Connect, Adena), in one call. So we have to only use
    primitive types on parameters and remove objects. We also have to create
    new functions to update valopers for the desired fields.
    - [x] Make functions more robust by implementing parameter validation.
    - [x] Add protection on update functions so only the original caller can
    update its valoper.
    - [x] Prevent SPAM by the need of sending coins when you want to
    register as a valoper.
    - [x] Enhance the Render function with a pagination feature.

    Process to be a validator:
    1) Register your validator node as a `Valoper` with the
    `r/gnolang/valopers.Register` function. Follow the instructions set in
    the `Instructions` global variable (to be done).
    2) When you think your valoper is ready, make a GovDao proposal to add
    it to the validator valset with
    `/r/gnoland/valopers_proposal.MakeProposal`.

    In local environment, the two steps can be done by:

    ```
    gnokey maketx call \
      -pkgpath "gno.land/r/gnoland/valopers" \
      -func "Register" \
      -gas-fee 1000000ugnot \
      -gas-wanted 30000000 \
      -send "20000000ugnot" \
      -broadcast \
      -chainid "dev" \
      -args "berty" \
      -args "Berty's validator description" \
      -args "g1ut590acnamvhkrh4qz6dz9zt9e3hyu499u0gvl" \
      -args "gpub1pgfj7ard9eg82cjtv4u4xetrwqer2dntxyfzxz3pq0skzdkmzu0r9h6gny6eg8c9dc303xrrudee6z4he4y7cs5rnjwmyf40yaj" \
      -remote "tcp://127.0.0.1:26657" \
      test1

    gnokey maketx call \
      -pkgpath "gno.land/r/gnoland/valopers_proposal" \
      -func "ProposeNewValidator" \
      -gas-fee 1000000ugnot \
      -gas-wanted 20000000 \
      -send "100000000ugnot" \
      -broadcast \
      -chainid "dev" \
      -args "g1ut590acnamvhkrh4qz6dz9zt9e3hyu499u0gvl" \
      -remote "tcp://127.0.0.1:26657" \
      test1
    ```

    ---------

    Signed-off-by: D4ryl00 <[email protected]>
    Signed-off-by: Jeff Thompson <[email protected]>
    Co-authored-by: Jeff Thompson <[email protected]>
    Co-authored-by: Miloš Živković <[email protected]>

commit b6c55248760c3b23b807171352bfdcc04168026a
Author: julienrbrt <[email protected]>
Date:   Fri Mar 14 12:57:59 2025 +0100

    refactor(vm): use expected keeper interface (#3935)

    The goal of this PR is to prepare making more usable the GnoVM by
    potentially other chains.

    This follow the pattern that exists in the Cosmos SDK
    (https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/gov/types/expected_keepers.go)
    and that is being used in this repo as well:
    https://github.com/julienrbrt/gno/blob/71fbdef783b5d72ca603ed45b8fb10434ca0ab11/tm2/pkg/sdk/auth/types.go#L23.

commit d677c2f526eecff89af3952782579f26913028fe
Author: Morgan <[email protected]>
Date:   Thu Mar 13 17:36:40 2025 +0100

    feat(gnovm): implement import rules for non-obvious identifiers (#3920)

    This PR implements the rules for importing packages that don't match the
    last element of their import path, with rules like those specified in
    https://github.com/gnolang/gno/issues/3730#issuecomment-2704490872 .

    Closes #3730.

commit ec3d51aef2104fa9f4a19d16492155e8d66eb611
Author: Alexis Colin <[email protected]>
Date:   Thu Mar 13 23:23:00 2025 +0900

    style: fix sublist margin (#3934)

    Simple PR to improve the margin balance between list and sublist in
    gnoweb render.

    cc @leohhhn

    ![screenshot_2025-03-12_at_14 04
    28](https://github.com/user-attachments/assets/6b7c2936-e7c2-4ff9-9b9f-d0ed87199525)

commit c48c59bd608dfb36b60a354bf2e2551cbc2c16ca
Author: Manfred Touron <[email protected]>
Date:   Wed Mar 12 15:07:35 2025 +0100

    feat(examples): add p/moul/ulist/lplist (layered proxy list) (#3413)

    Add a layered proxy list (for `ulist.IList`) for upgrade patterns.

    Depends on #3407

    ---------

    Signed-off-by: moul <[email protected]>

commit e0c414833602c51dbb0022b7b477018215b6ad26
Merge: 3149275d 52bd2024
Author: Leon Hudak <[email protected]>
Date:   Tue Mar 11 18:46:15 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 52bd2024116627b5f40ded8fc822273e521fba2b
Author: Leon Hudak <[email protected]>
Date:   Tue Mar 11 18:19:05 2025 +0100

    feat(r/docs): using `r/sys/users` (#3914)

    Adds a simple example on how to resolve names and addresses using the
    new user registry system. Also needed for a blog post.

commit 5cb216049bc57d312e0855572b839dbab8770f41
Author: Leon Hudak <[email protected]>
Date:   Tue Mar 11 17:48:45 2025 +0100

    fix: user registry changes (#3905)

    Making a few minor changes on the user registry realms.

commit f71549e3bd905b0325b939db5c18f3b9d0949f92
Author: Morgan <[email protected]>
Date:   Tue Mar 11 17:15:26 2025 +0100

    feat(examples): add gno.land/{p,r}/morgan/chess (#3911)

    Quite incredible, I agree.

    Includes a small fix on the preprocessor to make everything work. :tada:

commit 8e04368f7266af43bcceb9a0e077955bfc7d2973
Author: Jeff Thompson <[email protected]>
Date:   Tue Mar 11 16:09:12 2025 +0100

    fix(pkg/doc): include Consts and Vars of the type in JSON (#3912)

    This is a follow-on to the vm/qdoc PR
    https://github.com/gnolang/gno/pull/3459 . We already handle the case
    where the AST lists type constructors as part of the Type description.
    We also need to handle the case where consts and vars of the type are
    listed as part of the Type description (not in the main Consts and Vars
    sections). See the [updated lines in the hello
    test](https://github.com/gnolang/gno/blob/a693cd5146591261f90956e1899f5460d39535bc/gnovm/pkg/doc/testdata/integ/hello/hello.gno#L14-L18).
    ```
      var myStructPtr *myStruct
      myStructConst *myStruct = &myStruct{a: 1000}
    ```
    For these values to appear in the vm/qdoc result, this PR fix is needed.

    We also fix an oversight in the `JSONField` struct to add the json field
    names.

    ---------

    Signed-off-by: Jeff Thompson <[email protected]>

commit 202c867f1d16ef07765971c7f47fd62d1bd7ddc1
Author: Rémi BARBERO <[email protected]>
Date:   Tue Mar 11 15:02:44 2025 +0100

    fix(examples): a p/moul/authz.ContractAuthority could execute multiple actions (#3913)

    There was a once.Once object that prevented one action to be executed
    twice by the ContractAuthority handler. But it also prevented the
    ContractAuthority from executing any other actions.

    The fix was to link the once.Once object to the action, not to the
    ContractAuthority.
    A test has also been added to test the case.

    ---------

    Signed-off-by: D4ryl00 <[email protected]>
    Co-authored-by: Manfred Touron <[email protected]>

commit 6b6bbd3cefd5dc320e5d04571f26a62e134c79e4
Author: Manfred Touron <[email protected]>
Date:   Tue Mar 11 14:42:00 2025 +0100

    chore(examples): move r/demo/markdown_test to r/docs/markdown + update content (#3909)

    once merged, we should take the habit of updating it when we extend
    gnoweb's rendering capabilities such as in #3763

    ---------

    Signed-off-by: moul <[email protected]>

commit 1d125428842c0656cd5909305025d78ef3731701
Author: Mustapha <[email protected]>
Date:   Tue Mar 11 11:10:32 2025 +0100

    fix(gnoweb): footer logo link to navigate to home page (#3907)

    This PR is to add "/" to the `href` attribute so the logo correctly
    links to the home page.

    Co-authored-by: mous1985 <[email protected]>

commit 803ab8c6afbcfed24c17d40e6ac1210c8d7bf028
Author: Miguel Victoria Villaquiran <[email protected]>
Date:   Mon Mar 10 23:03:15 2025 +0100

    chore: remove All nativeType and nativeValues (#3677)

    Closes #1361

    ---------

    Co-authored-by: Morgan Bazalgette <[email protected]>

commit 42019f23590c78714401cdd010832bdb12c075d6
Author: Alex Gherasie <[email protected]>
Date:   Tue Mar 11 03:10:59 2025 +0900

    feat(examples): add {p,r}/agherasie/forms (#3524)

    Sorry for the long hiatus which caused #2604 to close, I moved to South
    Korea this year for a university exchange program and let this PR
    collect dust for a while.
    I've addressed
    https://github.com/gnolang/gno/pull/2604#discussion_r1787776352 in
    https://github.com/gnolang/gno/commit/7a6a03235e1a615d2fa942294ac625a170de6ba9,
    hoping that the PR might be ready for merge now !
    If not, please let me know if any further updates should be made to the
    code !

    ---

    As part of the student contributor program, I attempted to create a new
    example realm that allows the creation and submission of forms on gno !
    - **Form Creation**: Create new forms with specified titles,
    descriptions, and fields.
    `CreateForm(...)`
    - **Form Submission**: Submit answers to forms.
    `SubmitForm(...)`
    - **Form Retrieval**: Retrieve existing forms and their submissions.
    `GetForms(...), GetFormByID(...), GetAnswer(...)`
    - **Form Deadline**: Set a precise time range during which a form can be
    interacted with.
    The system supports the following field types:

    type|example
    -|-
    string|`{"label": "Name", "fieldType": "string", "required": true}`
    number|`{"label": "Age", "fieldType": "number", "required": true}`
    boolean|`{"label": "Is Student?", "fieldType": "boolean", "required":
    false}`
    choice|`{"label": "Favorite Food", "fieldType":
    "[Pizza|Schnitzel|Burger]", "required": true}`
    multi-choice|`{"label": "Hobbies", "fieldType":
    "{Reading|Swimming|Gaming}", "required": false}`

    The external repo where the initial development took place and where you
    can find the frontend is [here](https://github.com/agherasie/gno-forms).

    The web app itself is hosted [here](https://gno-forms.netlify.app/)

    And the most recent test4 version of the contract is
    [forms2](https://test4.gno.land/r/g1w62226g8hykfmtuasvz80rdf0jl6phgxsphh5v/testing/forms2)

    ---

    Screenshots :

    <details>
    <summary>
    <a
    href="https://test4.gno.land/r/g1w62226g8hykfmtuasvz80rdf0jl6phgxsphh5v/testing/forms2">gnoweb
    Render()</a>
    </summary>
    <img width="941" alt="image"
    src="https://github.com/user-attachments/assets/24b9c17d-b51e-4d0b-ab19-b9bca49c0a89">
    </details>

    <details>
    <summary>
    <a
    href="https://gno-forms.netlify.app/results/0000002/g1w62226g8hykfmtuasvz80rdf0jl6phgxsphh5v">
    a form response in the web interface
    </a>
    </summary>
    <img width="539" alt="image"
    src="https://github.com/user-attachments/assets/b3469545-842f-4030-a4da-1060802c6477">
    </details>

    <details>
    <summary>
    <a href="https://gno-forms.netlify.app/create">creating a form in the
    web interface</a></summary>
    <img width="564" alt="image"
    src="https://github.com/user-attachments/assets/c6e16bd0-0523-47a7-bf09-b3dc7f5d9314">
    </details>

    ---

    <details><summary>Contributors' checklist...</summary>

    - [X] Added new tests, or not needed, or not feasible
    - [X] Provided an example (e.g. screenshot) to aid review or the PR is
    self-explanatory
    - [X] Updated the official documentation or not needed
    - [X] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
    was included in the description
    - [ ] Added references to related issues and PRs
    - [ ] Provided any useful hints for running manual tests
    - [ ] Added new benchmarks to [generated
    graphs](https://gnoland.github.io/benchmarks), if any. More info
    [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
    </details>

    ---------

    Co-authored-by: Leon Hudak <[email protected]>
    Co-authored-by: Guilhem Fanton <[email protected]>
    Co-authored-by: Nathan Toups <[email protected]>
    Co-authored-by: Morgan <[email protected]>

commit b1685f0c8a13b287ca081536dbe87b2d0b30acfe
Author: Morgan <[email protected]>
Date:   Mon Mar 10 17:04:14 2025 +0100

    ci: reciprocally test gnovm and examples when they change (#3904)

    \+ fix the underlying bug in cmd/gno that was causing the failure.

commit 460877725f02ae119caee119c25bb4f348f1e4ab
Author: Morgan <[email protected]>
Date:   Mon Mar 10 16:35:33 2025 +0100

    feat(cmd/gno): perform type checking before test (#3887)

    Fixes #3831.

    Adds type checking as a step before executing a package's tests.

commit b1fc6ac59e4be64bc8823ca165a5354ab504a4ac
Author: Alexis Colin <[email protected]>
Date:   Tue Mar 11 00:29:18 2025 +0900

    feat: add assets.gnoteam.com to the CSP img-src  whitelist (#3892)

    In order to allow gnoteam images to be served through CSP, this PR adds
    the dedicated domain https://assets.gnoteam.com/ to the rules. In
    addition to https://gnolang.github.io/, which is used for the blog
    system, gnoteam assets will also be used for general purposes, ensuring
    secure and consistent asset delivery.

commit 0d5a7370e45d5c74d98cb5c419eb08e82f16c216
Author: Leon Hudak <[email protected]>
Date:   Mon Mar 10 16:22:00 2025 +0100

    fix: remove `r/demo/users` traces (#3896)

    Master is red because CI didn't catch VM tests related to `r/demo/users`
    in #3166

    This PR fixes this and also fixes some other leftover occurrences of
    `r/demo/users`.

    cc @thehowl this is another `examples/` dep that should probably be
    removed.

    ---------

    Co-authored-by: Morgan Bazalgette <[email protected]>

commit a37a07356b2e5fa84f45285bb506740a773ea8e4
Author: Petar Dambovaliev <[email protected]>
Date:   Sun Mar 9 15:42:12 2025 +0100

    fix: interface to concrete type by T(ifaceVal) is not allowed (#3757)

    Closes [3412](https://github.com/gnolang/gno/issues/3412)

commit 9b5dc9c7d60365c0c0823980d665a02708c53c49
Author: Leon Hudak <[email protected]>
Date:   Sat Mar 8 12:25:15 2025 +0100

    refactor: `r/demo/users` (#3166)

    Addresses: #2827

    This PR refactors the current `r/demo/users` & `r/sys/users` system in
    accordance to the issue mentioned above. Below is the high-level
    overview of the new system.

    It also makes a small change to the `p/demo/releases` lib.

    - Fully replaces `r/demo/users`
    - Is the main entry point for users looking to register a name, create
    an alias (rename themselves), or delete their username
    - Implements allowed username pattern checks as per the issue #2827
    - Is pausable by GovDAO, contains no other administration functionality
    - Contains a nice UI/render for users (please suggest improvements) -
    see bottom
    - Uses `r/demo/profile` for displaying extra information about a user
    (to be moved to `r/nt/profiles` or `r/gnoland/profiles`)
    - @jaekwon's request: add payment in GNOT for registration ✅

    - Namespace check moved to `r/sys/names`
    - Contains the address/name <> user stores, to which only whitelisted
    realms can write
    - Contains resolver functions & other useful getters
    - Is callable only by whitelisted realms, such as `r/gnoland/users/v1`,
    etc.
    -  Whitelist is fully managed by GovDAO (after #3523 was resolved)
    - Namespace checking functionality moved here (from `r/sys/users`),
    added tests, as discussed with @moul
    - ~Verify function now only upgradeable with a GovDAO prop instead of
    previously being ownable~ verify func upgrateability removed, as we'll
    just deploy a `r/sys/names/vX` when we need to, as discussed with @moul
    - ~Verify functionality is now not pausable and on by default, as per
    discussions with @moul. This means Portal Loop will need to be patched
    upon merging this PR, as many txs will fail due to not having proper
    namespace permissions.~ The namespace verify functionality is off by
    default, but should be enabled in genesis via `r/sys/names.Enable()`.
    The Portal Loop will indeed need to be patched if we enable this
    functionality.
    - Updated the VM keeper to call `r/sys/names` for the namespace check
    instead of `r/sys/users`
    - Updated params to load `r/sys/names`, which the keeper will call

    ![Screenshot 2025-01-17 at 01 10
    56](https://github.com/user-attachments/assets/b824c2aa-29b3-4497-99bf-689b7f49cb4a)

    Currently this is the "releases" page for the user registration systems
    (example data):

    <img width="1287" alt="Screenshot 2025-02-03 at 12 19 28"
    src="https://github.com/user-attachments/assets/0407b21d-4457-48af-80f4-b0ef10649337"
    />

    <details><summary>Contributors' checklist...</summary>

    - [x] Added new tests, or not needed, or not feasible
    - [x] Provided an example (e.g. screenshot) to aid review or the PR is
    self-explanatory
    - [x] Updated the official documentation or not needed
    - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
    was included in the description
    - [x] Added references to related issues and PRs
    - [x] Provided any useful hints for running manual tests
    </details>

    ---------

    Co-authored-by: Morgan <[email protected]>
    Co-authored-by: Manfred Touron <[email protected]>

commit c68cbcce5f1d17918f2d7763d6b5d522ed046039
Author: Morgan <[email protected]>
Date:   Fri Mar 7 18:21:17 2025 +0100

    chore: fix master build (#3891)

commit ac5584b7872e11df3c53ae37fbc2092839a43fca
Author: Leon Hudak <[email protected]>
Date:   Fri Mar 7 17:32:36 2025 +0100

    feat(examples): `p/leon/pkgerr` (#3738)

    Adds a simple package to make your Gno errors match your realm path.

    Go wizards tell me if I'm doing something wrong 🙏

commit d24efa034173cb57168e27afdb3dcce4a07767fb
Author: Jae Kwon <[email protected]>
Date:   Fri Mar 7 07:17:48 2025 -0800

    feat: lock token transfer and parameter module, take 2 (#3860)

    This is a continuation of https://github.com/gnolang/gno/pull/3176.

    It breaks the params struct into fields and stores them in
    <module>:_:<fieldname>. All parameters are of the form <module>:<name>
    or <module>:<realm/_/*>:<name>. A colon is used rather than a period/dot
    because it's ambiguous with realm domains.

    std.SetParam is realm-local only, limited and safe.
    sys/params.SetSysParam is arbitrary and global. Need to make sure it's
    only importable by r/sys/params, but I think we said we'd do this with
    "internal" or something. Maybe for a followup PR.

    The ParamsKeeper is divided into prefix spaces, `pk.WithModule("bank")`
    for example, and that is passed into the BankKeeper, that way the
    BankKeeper only has access to the bank:* param space. "language
    capabilities" security. But the VMKeeper needs to the root ParamsKeeper
    because it needs to be able to modify anything via r/sys/params.

    I got rid of the .type suffix of param keys. It's less safe right now
    but we can add type safety to this later. You *can* and *must* use the
    type suffix from toml for certain types though; "strings" which
    represent []strings must be suffixed by .strings, because toml only
    gives []interface{}{}.

    ---------

    Co-authored-by: piux2 <[email protected]>
    Co-authored-by: Manfred Touron <[email protected]>
    Co-authored-by: Morgan <[email protected]>

commit a5e084cc668cbd55eb324f2c8970b8e0aca2b584
Author: Morgan <[email protected]>
Date:   Fri Mar 7 15:13:40 2025 +0100

    feat(gnovm/tests/stdlibs): add `fmt` (#3847)

    This PR removes `fmt` from being implemented using NativeValue /
    NativeType, and implements a mostly pure-Gno implementation which uses
    an initial, rudimentary implementation of Gno reflection for `fmt`.

    This PR is ready for review, but some of its related work has been
    broken out in separate PR to aid reviewing and create atomic PRs.

    - Blocks #3677
    - Relates to #1361
    - Depends on #3861
    - Depends on #3862
    - Depends on #3875

    The main addition is of this set of files, which comprises the bulk of
    the added lines of this PR. Most of this is a copy of Go's `fmt`.
    Changes are mostly in `errors.gno` and `format.gno` - the other files
    are left mostly intact.

    At the end of `print.gno`, there is an added section containing a set of
    native functions which form the "reflection" needed to implement the
    `fmt` package in a manner that is similar to Go's. The implementation is
    not meant to be a public API and is meant to serve initially only for
    usage by `fmt`; we can use this as sketch to then implement a proper
    `reflect` package.

    Attention in reviewing should mostly go to this `print.gno` and its
    `print.go` counterpart, especially for any missed cases or potential
    bugs.

    Complementary to the above, to avoid some problems that were arising due
    to the handling of os.Stdin, Stdout and Stderr, I also removed the
    NativeValue / NativeType in `os` and replaced them with a native binding
    alternative.

    To avoid having both an `Output` and `ErrorOutput` on the machine, this
    package supports an additional method on the `Machine.Output`,
    `StderrWrite`, which is implemented by writers who wish to differentiate
    between the two.

    - `gnovm/pkg/test`
    	- added support for `StderrWrite` in its writers
    	- removed native values for `os`  and `fmt`
    - combine `stdin`, `stdout`, `stderr` into a single `output` parameter
    in the related functions.
    - `gnovm/pkg/gnolang`
    - support testing `gnovm/tests/stdlibs`, by only testing stdlibs that
    exist there and not in the official stdlibs.
    - `gnovm/cmd/gno`
    	- fix tests which needed the `fmt` package.
    - `gnovm/tests/files`
    - most changed tests are result of the improved functionality of the
    `fmt` package, allowing for instance to show declared types correctly.
    - `gnovm/stdlibs/bufio`
    	- due to the removal of `os.Stdin`, this example had to be changed.
    - `misc/genstd`
    - added a flag `-skip-init-order` when creating it could cause problems,
    like the testing stdlibs; fixed a bug when using `TypedValue`.

commit a36b8e6f9d770436a8e7b0b38b97aae21d04b9ce
Author: Antoine Eddi <[email protected]>
Date:   Fri Mar 7 14:54:24 2025 +0100

    feat: add gnoweb codeowners (#3890)

    This PR:
    - add dismissed review state support to the bot:
    https://github.com/gnolang/gno/pull/3890/commits/90cdc51cb5df295fac4e7a1d712f304a98a4e4af
    (requested here:
    https://github.com/gnolang/gno/issues/3238#issuecomment-2701523356)
    - add gnoweb codeowners to the config:
    https://github.com/gnolang/gno/pull/3890/commits/f0001ccf2891cab12607a4ee0d400354204a7731
    (requested here:
    https://github.com/gnolang/gno/issues/3238#issuecomment-2693794519)

    Note: It might be cleaner in the future to create codeowner teams for
    different parts of the codebase (e.g. a `gnoweb-codeowners` team for
    `gfanton` and `alexiscolin`) rather than manually listing each user in
    the config. Something to think about.

commit 01df7ebd04122725a62cf2e8cf536d7f3d426caf
Author: Morgan <[email protected]>
Date:   Fri Mar 7 14:05:11 2025 +0100

    fix(gnovm/pkg/test): use scoped store when running GetMemPackage (#3854)

    Fixes #3240

    One-line fix for realms not having independent states when tested
    together.

commit f35bbf2669aab346e59f9b1f66aff3880f258f8f
Author: Jerónimo Albi <[email protected]>
Date:   Fri Mar 7 00:37:42 2025 +0100

    feat(examples): add `p/jeronimoalbi/datastore` package  (#3698)

    The purpose of this package is to support a data store where multiple
    collection based storages could be defined.

    Each named storage defines a collection of records where each record can
    optionally and by default have any number of user defined fields, which
    can be constrained to a pre defined set of fields by using a schema
    definition.

    The implementation is a layer on top of `p/moul/collection`.

    Example of `datastore` package usage:

    ```go
    package main

    import (
    	ds "gno.land/p/jeronimoalbi/datastore"
    )

    func main() {
    	var db ds.Datastore

    	// Define a unique case insensitive index for user emails
    	emailIdx := ds.NewIndex("email", func(r ds.Record) string {
    		return r.MustGet("email").(string)
    	}).Unique().CaseInsensitive()

    	// Create a new storage for user records
    	storage := db.CreateStorage("users", ds.WithIndex(emailIdx))

    	// Add a user with a single "email" field
    	u := storage.NewRecord()
    	u.Set("email", "[email protected]")

    	// Save to assing user ID and update index(es)
    	u.Save()
    	println("Records =", storage.Size())

    	// Find the user by email
    	print("Search by Email ... ")
    	record, found := storage.Get(emailIdx.Name(), "[email protected]")
    	if !found {
    		panic("record by email not found")
    	}

    	println("ID =", record.ID())

    	// Find user by ID
    	print("Search by ID ... ")
    	record, found = storage.GetByID(u.ID())
    	if !found {
    		panic("record by ID not found")
    	}

    	email := record.MustGet("email").(string)
    	println("Email =", email)

    	// Delete the user from the storage and update index(es)
    	storage.Delete(u.ID())
    	println("Records =", storage.Size())
    }

    // Output:
    // Records = 1
    // Search by Email ... ID = 1
    // Search by ID ... Email = [email protected]
    // Records = 0
    ```

commit b0b752c34f8af073cf57d97bed203e71790cfa21
Author: Manfred Touron <[email protected]>
Date:   Fri Mar 7 00:37:00 2025 +0100

    feat: docs v2 (#3868)

    Continues #3855 by @leohhhn
    The changes were great, and I kept most of the good content (thank you).
    However, this PR slightly shifted the direction by making the `docs/`
    folder more focused on GitHub, Markdown, and the project, rather than
    Docusaurus, the website, or global documentation. In the future, we may
    create a more comprehensive documentation website, but for now, we want
    the `docs/` folder to be efficient and centered around the project.
    Ideally, it should be the only resource we invest energy in. However, I
    can easily envision supplementing it with external resources, such as
    blog posts or another repository with non-project documentation.
    Alternative view: https://github.com/leohhhn/gno/pull/2

    - [x] Reorganize by personas (`builders/`, `users/`) and maintain a
    `references/` section for metadata.
    - [x] Remove items that do not belong in the `docs/` of this repository
    (e.g., intro to blockchain).
    - [x] Remove unusual numbers in titles, likely intended for Docusaurus.
    - [x] Merge related content, such as combining `stdlibs/*` into
    `stdlibs.md`.
    - [x] Simplify `Makefile` and make it consistent with the other folders.
    - [x] Simplify introduced `.github/workflows`.
    - [x] Conduct a quick proofreading.
    - [x] Fix links.
    - [x] Removed docusaurus, can be discussed in an upcoming PR.
    [1be1a3a](https://github.com/gnolang/gno/pull/3868/commits/1be1a3a388a252172f614d1bde8b6a90e5f799e4)
    - [x] Removed content that should belong to somewhere else, such as
    other README.md files.

    ---------

    Signed-off-by: moul <[email protected]>
    Co-authored-by: leohhhn <[email protected]>
    Co-authored-by: sw360cab <[email protected]>
    Co-authored-by: Leon Hudak <[email protected]>
    Co-authored-by: Morgan Bazalgette <[email protected]>

commit 69af6e277173afce8cb6da7bc6e74a2f7645203d
Author: ltzmaxwell <[email protected]>
Date:   Thu Mar 6 23:04:36 2025 +0800

    fix(gnovm): fix nil pointer deref for duplicate declarations (#3886)

    close: #2763 .

    This PR addresses the nil pointer issue, also fix the `redeclaration`
    issue by @thehowl .
    `filetest` is a special case, , `redeclaration` is still permitted in
    filetest files(e.g. z_0_filetest, z_1_filetest...) for `convenience`.

    ---------

    Co-authored-by: Morgan Bazalgette <[email protected]>

commit f67adf25655282eaa56295f352fcac581bf3adb2
Author: Morgan <[email protected]>
Date:   Thu Mar 6 15:42:56 2025 +0100

    chore: remove typeval and other unused uverse vals (#3883)

commit f1d6210f0ab4936d15897d858fa7a2ac6a890054
Author: sunspirit <[email protected]>
Date:   Thu Mar 6 18:39:11 2025 +0700

    fix(tm2): Fix the endpoint /tx?hash= to make it work (#2518)

    From issue : https://github.com/gnolang/gno/issues/2489

    I found an issue with the code segment parsing arguments from the
    request that did not support base64 encoding, so I implemented logic to
    handle it. If there are any inconsistencies, please share the opinion

    ![Screenshot from 2024-07-06
    12-00-09](https://github.com/gnolang/gno/assets/167175638/a4a0304d-10e0-41cc-abbc-d82a81301847)

    <!-- please provide a detailed description of the changes made in this
    pull request. -->

    <details><summary>Contributors' checklist...</summary>

    - [ ] Added new tests, or not needed, or not feasible
    - [ ] Provided an example (e.g. screenshot) to aid review or the PR is
    self-explanatory
    - [ ] Updated the official documentation or not needed
    - [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
    was included in the description
    - [ ] Added references to related issues and PRs
    - [ ] Provided any useful hints for running manual tests
    - [ ] Added new benchmarks to [generated
    graphs](https://gnoland.github.io/benchmarks), if any. More info
    [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
    </details>

    ---------

    Co-authored-by: Morgan Bazalgette <[email protected]>
    Co-authored-by: Miloš Živković <[email protected]>

commit 5b056d779ef74ed6fb4f9edc9e715be46d9d16a9
Author: Alexis Colin <[email protected]>
Date:   Thu Mar 6 20:15:39 2025 +0900

    fix(gnoweb): breadcrumb generation for consistent argument and query handling (#3835)

    This PR refactors the `generateBreadcrumbPaths` function to provide a
    consistent model for handling breadcrumb parts extracted from the URL
    path, arguments, and query parameters. The changes include:

    - **Consistent Extraction of Parts:**
    The existing logic that splits the URL path into parts remains
    unchanged. However, the root (`p` / `r`) part is not clickable anymore
    since we don't have any content here for now. It also fixes the HTML
    list with proper ending tags and Aria attributes/elements.

    - **New Argument Parts (ArgParts):**
    Instead of storing all arguments as a single string, we now split the
    url.Args value (i.e., the part after the `:`) into individual segments.
    These segments are processed similarly to the path parts, with
    cumulative URLs generated for each segment. This provides a more
    granular and consistent breadcrumb structure.

    - **Query Parameters Handling:**
    Query parameters (after the `?`) are iterated over and added to a new
    Queries slice. Since iterating over an empty map is safe, no additional
    condition is required here.

    - **Update query value on click from input:**
    By clicking on the query from the breadcrumb, it becomes possible to
    edit the value quickly.

    - **Fixing breadcrumb special characters in the input box**
    Enable `EncodeNoEscape` in the `EncodeURL` functions in order to remove
    escaped chars.
    <img width="907" alt="Capture d’écran 2025-03-04 à 23 50 16"
    src="https://github.com/user-attachments/assets/7fb6c6a8-cc15-4caa-80e2-cd6eae20cea2"
    />
    <img width="908" alt="Capture d’écran 2025-03-04 à 23 50 55"
    src="https://github.com/user-attachments/assets/b9870915-e90a-4af1-b12e-bd387715e629"
    />
    <img width="907" alt="Capture d’écran 2025-03-05 à 00 27 16"
    src="https://github.com/user-attachments/assets/6ee3c9fb-a762-4c1c-bcd0-05e3278bb0f0"
    />

    <img width="907" alt="Capture d’écran 2025-03-04 à 23 46 56"
    src="https://github.com/user-attachments/assets/b5442c99-9259-4c45-8019-bc55e9e979aa"
    />
    <img width="908" alt="Capture d’écran 2025-03-04 à 23 43 06"
    src="https://github.com/user-attachments/assets/8e4f6002-fbc7-45d8-8e7c-23b394fd5108"
    />
    <img width="908" alt="Capture d’écran 2025-03-04 à 23 43 30"
    src="https://github.com/user-attachments/assets/e3194167-f65b-4806-90de-d2e7d32c60f1"
    />
    <img width="907" alt="Capture d’écran 2025-03-05 à 01 05 20"
    src="https://github.com/user-attachments/assets/fde2457c-081a-4c83-948a-ff125f10b60f"
    />

commit cbaaf392d511dd8fce6f885490be1038ff944fff
Author: Kazaï <[email protected]>
Date:   Wed Mar 5 17:55:22 2025 +0100

    feat(examples): add `p/thox/{accesscontrol,timelock}` (#2307)

    We have developed two packages: `accesscontrol` and `timelock` inspired
    by openzeppelin contracts. These packages were created in collaboration
    with @mous1985 , @DIGIX666 , and myself.

    The `accesscontrol` package was primarily designed to support the
    development of the `timelock` package, but it can also be used
    independently for many other use cases.

    The `accesscontrol` package provides a library for managing roles and
    permissions within Gno. It allows for the creation, assignment, and
    management of roles with specific administrative privileges, ensuring
    that only authorized accounts can perform certain actions.

    The `timelock` package offers a library for scheduling, canceling, and
    executing time-locked operations in Gno. It ensures that operations are
    only carried out after a specified delay and provides mechanisms to
    manage and verify the status of these operations. The creation of the
    `accesscontrol` package was necessary to provide role and permission
    management required for the administrative tasks of `timelock`.

    - Realm Administration Management: Create administrator roles to manage
    realms and assign or revoke roles as needed.
    - Role-Based Access Control (RBAC): Implement an RBAC system to control
    who can access which resources and perform which actions within a Gno
    dApp.
    - Security and Compliance: Use roles to ensure that only authorized
    individuals can perform critical actions, helping to meet security and
    compliance regulations.

    - Delayed Transactions: Schedule transactions or actions to be executed
    at a specific future time.
    - Asset Locking: Implement asset locking mechanisms where users must
    wait for a certain period before they can access or move assets.
    - Task Automation: Automate periodic or conditional tasks using specific
    time delays.

    These examples of use cases are not exhaustive, and many other things
    are possible with these packages.

    <!-- please provide a detailed description of the changes made in this
    pull request. -->

    <details><summary>Contributors' checklist...</summary>

    - [ ] Added new tests, or not needed, or not feasible
    - [ ] Provided an example (e.g. screenshot) to aid review or the PR is
    self-explanatory
    - [ ] Updated the official documentation or not needed
    - [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
    was included in the description
    - [ ] Added references to related issues and PRs
    - [ ] Provided any useful hints for running manual tests
    - [ ] Added new benchmarks to [generated
    graphs](https://gnoland.github.io/benchmarks), if any. More info
    [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
    </details>

    ---------

    Co-authored-by: théo dub <[email protected]>
    Co-authored-by: mous1985 <[email protected]>
    Co-authored-by: Mustapha <[email protected]>
    Co-authored-by: deelawn <[email protected]>
    Co-authored-by: Thox <[email protected]>
    Co-authored-by: DIGIX666 <[email protected]>
    Co-authored-by: Manfred Touron <[email protected]>
    Co-authored-by: Morgan <[email protected]>
    Co-authored-by: Morgan <[email protected]>

commit ac165805d84b804da3d5d4434cae0c193dee4e0e
Author: Morgan <[email protected]>
Date:   Wed Mar 5 14:48:23 2025 +0100

    feat(gnovm): improve interface/func/struct type `String` methods (#3875)

    - only show the types in the parameters and results for functions,
    matching go's reflect.Type.String
    - match field list to go's

    extracted from #3847.

    This blocks https://github.com/gnolang/gno/pull/3847 because for
    simplicity, we use the type String() methods for syntaxes like `%#v` and
    `%T` which show the type. Making these match Go's avoids us modifying
    some types, and I think it's a nice addition in making us more
    consistent with Go.

commit b01689fd389dbb913e52dd2af16687097c6baf84
Author: Leon Hudak <[email protected]>
Date:   Wed Mar 5 14:42:36 2025 +0100

    fix(minisocial): reset pager upon reset (#3879)

    The pager was not being reset upon post resetting the app.

commit 6f91a35f3fcb0da593a8b45f6b19d70865406e05
Author: Emmanuel T Odeke <[email protected]>
Date:   Tue Mar 4 18:56:19 2025 +0200

    docs: improve go<>gno compat document searchability on complex numbers (#3852)

    Imaginary values are not supported in Gno. Found by fuzzing and
    compatibility checks between Go and Gno

    ```go
    package main

    const (
    	Nj = 0i
    )
    ```

commit 4ac5fa48190b34cd83c786cebf8c4a3e3b991b2b
Author: Morgan <[email protected]>
Date:   Tue Mar 4 17:47:21 2025 +0100

    feat(gnovm): show stacktraces when recovering from a test (#3837)

    This PR ensures that when we recover inside of testing.gno, we then
    print also the resulting stracktrace, using a special function.

commit e344aca5b11ed9285fd8327b8026c70d8a6c9f31
Author: Morgan <[email protected]>
Date:   Tue Mar 4 17:29:03 2025 +0100

    fix(gnovm): handle calling method with value receiver on nil (#3861)

    This used to return a weird panic, now it correctly panics with a nil
    pointer dereference.

    Extracted from #3847.

    ---------

    Co-authored-by: ltzmaxwell <[email protected]>

commit 1a9909485979d2e68741ea2a953f972820572a0c
Author: Marc Vertes <[email protected]>
Date:   Tue Mar 4 16:22:01 2025 +0100

    fix(gnovm): fix unary operator ^ on constants (#3876)

    Apply Bigint.Not for untyped big ints.

    Fixes #3864.

commit 253c766117187c42267ab9dda2edab10d75216d6
Author: ltzmaxwell <[email protected]>
Date:   Tue Mar 4 22:31:23 2025 +0800

    fix(gnovm): correct const type deduction (#2948)

    closes https://github.com/gnolang/gno/issues/2944 and #3863
    <!-- please provide a detailed description of the changes made in this
    pull request. -->

    <details><summary>Contributors' checklist...</summary>

    - [ ] Added new tests, or not needed, or not feasible
    - [ ] Provided an example (e.g. screenshot) to aid review or the PR is
    self-explanatory
    - [ ] Updated the official documentation or not needed
    - [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
    was included in the description
    - [ ] Added references to related issues and PRs
    - [ ] Provided any useful hints for running manual tests
    - [ ] Added new benchmarks to [generated
    graphs](https://gnoland.github.io/benchmarks), if any. More info
    [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
    </details>

commit 536ea5bcde41ab3d2d2fd43fef99855d7cb6f858
Author: grepsuzette <[email protected]>
Date:   Tue Mar 4 03:26:07 2025 +0800

    feat(examples): create /r/grepsuzette/home (#3652)

    This is a home realm.

    @michelleellen kindly asked me if I wanted to create a
    r/grepsuzette/home so here it is :)

    ---------

    Co-authored-by: grepsuzette <[email protected]>
    Co-authored-by: Leon Hudak <[email protected]>

commit 9cd5c0e35a97d4c569e1302fa877591448ddb54a
Author: Mustapha <[email protected]>
Date:   Mon Mar 3 20:20:13 2025 +0100

    feat(example): `r/mouss` (#3472)

    Hi Gnomes ,
    This is my home page. it was difficult to be creative 😅 , so i did what
    i can do
    I put some informations about me

    ![Screenshot 2025-01-09 at 21 14
    20](https://github.com/user-attachments/assets/6da7926f-7b89-4363-83b0-83d103232f10)
    I'm passionate about cooking, so I've set up a page for those who want
    to share their national culinary specialties or just their favorite
    recipes, since there are so many nationalities in `gno` community.

    ![Screenshot 2025-01-09 at 21 22
    54](https://github.com/user-attachments/assets/f82b543e-43c4-47ac-8bab-4fe2874378a3)

    feel free to add your recipes ;)

    ![Screenshot 2025-01-09 at 21 35
    17](https://github.com/user-attachments/assets/1773522b-0b5a-431d-b8af-12ab6dc1c96e)

    @leohhhn

    ---------

    Co-authored-by: Leon Hudak <[email protected]>
    Co-authored-by: mous1985 <[email protected]>

commit fc359eacc31bad937e7fa0d81df415839c734378
Author: Morgan <[email protected]>
Date:   Mon Mar 3 16:33:28 2025 +0100

    fix(gnovm): support len() on nil map (#3856)

    This would panic at runtime due to a missed condition in
    TypedValue.GetLength.

commit 6c20104594fc2a4db260834ef0b76503590a21e9
Author: Morgan <[email protected]>
Date:   Mon Mar 3 15:57:24 2025 +0100

    feat(gnovm): add `any` type (#3862)

    This exists in Go, and it's a pain to add it later as a global, so
    making a PR to add this.

    extracted from #3847.

    ---------

    Co-authored-by: ltzmaxwell <[email protected]>

commit dc62b1888b5f8c68bb1cffa1a0185992fa328a51
Author: Manfred Touron <[email protected]>
Date:   Sat Mar 1 13:03:38 2025 +0100

    chore: improve error response structure and metadata (#3845)

    Adds a `vm.version={version}` when the VM returns an error response.

    Alternatively, we could simplify access to the version and other
    metadata, possibly with a "gnokey maketx --debug" command. However, I
    believe this addition is light enough to be included as a built-in
    feature.

    ---------

    Signed-off-by: moul <[email protected]>

commit 00ddf5516c0c5553c283ae9e2cab990f487b75bb
Author: Manfred Touron <[email protected]>
Date:   Fri Feb 28 18:56:09 2025 +0100

    chore: refactor gnoland/home (#3853)

    - simplify
    - make it more loop-friendly (PRs are easier)
    - cleanup html and invalid markdown
    - retained the current content to allow for PRs that focus on updating
    it

    ---------

    Signed-off-by: moul <[email protected]>

commit c06de0ac0c4f2c2445f5894396940f707153c002
Author: Alexis Colin <[email protected]>
Date:   Sat Mar 1 01:06:16 2025 +0900

    fix(gnoweb): change 'docs' to 'actions', updates to menus (#3850)

    This issue improves the user experience (UX) of GnoWeb by:

    - Replacing `Docs` with `Actions` in the navigation bar.
    If the goal was to provide documentation for the realm similar to what
    [pkg.go.dev](https://pkg.go.dev/) offers (in conjunction with #3459),
    that feature is not yet available and causes confusion.

    - Updating navigation icons to make each entry more understandable.

    - Promoting `Secure Mode` in the Helper page.
    Secure Mode is now enabled by default instead of Fast Mode, which
    currently displays a security message.

    - Replacing X with Twitter in the footer navigation.

    - Removing `Actions` (current Docs menu) for `/p` contents.

    <img width="1724" alt="Capture d’écran 2025-02-28 à 17 32 42"
    src="https://github.com/user-attachments/assets/78afd15f-0ec6-4c47-882e-e22e5578cb62"
    />

commit e352770149c631c529e380ba2cdfe785878ff629
Author: grepsuzette <[email protected]>
Date:   Fri Feb 28 19:14:52 2025 +0800

    fix(amino): panic when registering types with the same name (#2325)

    This adds some doc and tests to `tm2/pkg/amino` to address the following
    in amino_test.go:

    fixed #2326

    `// XXX Test registering duplicate names or concrete types not in a
    package.`

    - **chore(docs): document frequent functions in tm2/pkg/amino**
    - **chore(amino): add some tests**

    ```
    cd tm2/pkg/amino
    go test -v --run=WithPanic\$
    ```

    Tests have uncovered a potential bug however in `TestDupNamesMustPanic`.
    Opening an issue now to document this, with a possible fix.

    ```go
    	// The following does NOT panic, but it should.
    	// assert.Panics(t, func() {
    	// 	myPkg.WithTypes(
    	// 		tests.EmptyStruct{}, "A",
    	// 		tests.PrimitivesStruct{}, "B",
    	// 		tests.ShortArraysStruct{}, "A", // Same name
    	// 	)
    	// })
    ```

    <details><summary>Contributors' checklist...</summary>

    - [x] Added new tests, or not needed, or not feasible
    - [x] Provided an example (e.g. screenshot) to aid review or the PR is
    self-explanatory
    - [x] Updated the official documentation or not needed
    - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
    was included in the description
    - [ ] Added references to related issues and PRs
    - [x] Provided any useful hints for running manual tests
    - [ ] Added new benchmarks to [generated
    graphs](https://gnoland.github.io/benchmarks), if any. More info
    [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
    </details>

    ---------

    Co-authored-by: grepsuzette <[email protected]>
    Co-authored-by: Morgan Bazalgette <[email protected]>

commit f4324fb34674a880b1d663c5e01e9c00750a8355
Author: Jeff Thompson <[email protected]>
Date:   Fri Feb 28 11:28:12 2025 +0100

    feat: Add vm/qdoc with function comments (#3459)

    Addresses
    https://github.com/gnolang/gno/issues/522#issuecomment-2528693327
    by adding a query for `vm/qdoc` that uses a similar code path to `gno
    doc` which includes comments.

    For example, `gnokey query vm/qdoc -data
    "gno.land/r/gnoland/valopers/v2" -remote tcp://127.0.0.1:26657` returns
    the following JSON doc for
    [valopers](https://github.com/gnolang/gno/blob/master/examples/gno.land/r/gnoland/valopers/v2/valopers.gno).
    ```
    {
      "package_path": "gno.land/r/gnoland/valopers/v2",
      "package_line": "package valopers // import \"valopers\"",
      "package_doc": "Package valopers is designed around the permissionless lifecycle of valoper profiles. It also includes parts designed for govdao to propose valset changes based on registered valopers.\n",
      "values": [
        {
          "signature": "const (\n\terrValoperExists        = \"valoper already exists\"\n\terrValoperMissing       = \"valoper does not exist\" // Valoper is missing\n\terrInvalidAddressUpdate = \"valoper updated address exists\"\n\terrValoperNotCaller     = \"valoper is not the caller\"\n)",
          "const": true,
          "values": [
            {
              "name": "errValoperExists",
              "doc": "",
              "type": ""
            },
            {
              "name": "errValoperMissing",
              "doc": "",
              "type": ""
            },
            {
              "name": "errInvalidAddressUpdate",
              "doc": "",
              "type": ""
            },
            {
              "name": "errValoperNotCaller",
              "doc": "",
              "type": ""
            }
          ],
          "doc": ""
        },
        {
          "signature": "var valopers *avl.Tree // Address -> Valoper\n",
          "const": false,
          "values": [
            {
              "name": "valopers",
              "doc": "// Address -> Valoper\n",
              "type": "*avl.Tree"
            }
          ],
          "doc": "valopers keeps track of all the active validator operators\n"
        }
      ],
      "funcs": [
        {
          "type": "",
          "name": "GovDAOProposal",
          "signature": "func GovDAOProposal(address std.Address)",
          "doc": "GovDAOProposal creates a proposal to the GovDAO for adding the given valoper to the validator set. This function is meant to serve as a helper for generating the govdao proposal\n",
          "params": [
            {
              "Name": "address",
              "Type": "std.Address"
            }
          ],
          "results": []
        },
        {
          "type": "",
          "name": "Register",
          "signature": "func Register(v Valoper)",
          "doc": "Register registers a new valoper\n",
          "params": [
            {
              "Name": "v",
              "Type": "Valoper"
            }
          ],
          "results": []
        },
        {
          "type": "",
          "name": "Render",
          "signature": "func Render(_ string) string",
          "doc": "Render renders the current valoper set\n",
          "params": [
            {
              "Name": "_",
              "Type": "string"
            }
          ],
          "results": [
            {
              "Name": "",
              "Type": "string"
            }
          ]
        },
        {
          "type": "",
          "name": "Update",
          "signature": "func Update(address std.Address, v Valoper)",
          "doc": "Update updates an existing valoper\n",
          "params": [
            {
              "Name": "address",
              "Type": "std.Address"
            },
            {
              "Name": "v",
              "Type": "Valoper"
            }
          ],
          "results": []
        },
        {
          "type": "",
          "name": "init",
          "signature": "func init()",
          "doc": "",
          "params": [],
          "results": []
        },
        {
          "type": "",
          "name": "isValoper",
          "signature": "func isValoper(address std.Address) bool",
          "doc": "isValoper checks if the valoper exists\n",
          "params": [
            {
              "Name": "address",
              "Type": "std.Address"
            }
          ],
          "results": [
            {
              "Name": "",
              "Type": "bool"
            }
          ]
        },
        {
          "type": "",
          "name": "GetByAddr",
          "signature": "func GetByAddr(address std.Address) Valoper",
          "doc": "GetByAddr fetches the valoper using the address, if present\n",
          "params": [
            {
              "Name": "address",
              "Type": "std.Address"
            }
          ],
          "results": [
            {
              "Name": "",
              "Type": "Valoper"
            }
          ]
        },
        {
          "type": "Valoper",
          "name": "Render",
          "signature": "func (v Valoper) Render() string",
          "doc": "Render renders a single valoper with their information\n",
          "params": [],
          "results": [
            {
              "Name": "",
              "Type": "string"
            }
          ]
        }
      ],
      "types": [
        {
          "name": "Valoper",
          "signature": "type Valoper struct {\n\tName        string // the display name of the valoper\n\tMoniker     string // the moniker of the valoper\n\tDescription string // the description of the valoper\n\n\tAddress      std.Address // The bech32 gno address of the validator\n\tPubKey       string      // the bech32 public key of the validator\n\tP2PAddresses []string    // the publicly reachable P2P addresses of the validator\n\tActive       bool        // flag indicating if the valoper is active\n}",
          "doc": "Valoper represents a validator operator profile\n"
        }
      ]
    }
    ```

    ---------

    Signed-off-by: Jeff Thompson <[email protected]>
    Signed-off-by: D4ryl00 <[email protected]>
    Co-authored-by: D4ryl00 <[email protected]>
    Co-authored-by: Morgan <[email protected]>

commit 9d1fbf542ae88ec3d14decf05c5d0e3ce25bc2a5
Author: Petar Dambovaliev <[email protected]>
Date:   Fri Feb 28 11:17:07 2025 +0100

    fix: check interface convertable and print safe nil (#3843)

    Closes [3768](https://github.com/gnolang/gno/issues/3768), closes
    [3758](https://github.com/gnolang/gno/issues/3758)

    ---------

    Co-authored-by: Morgan Bazalgette <[email protected]>

commit 17f44dcc1cadb1179882525a3968cf7ad35352f7
Author: ltzmaxwell <[email protected]>
Date:   Fri Feb 28 00:26:12 2025 +0800

    fix(gnovm): remove readonly flag (#3840)

    closes: #3800 . see comments below.

commit 3149275d30e2e6e4976b86161c895253a2cf34f5
Merge: 6843b35e d1db75eb
Author: matija marjanovic <[email protected]>
Date:   Thu Feb 27 15:14:40 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 6843b35e40e8705adb68c2c50653359365e71dd6
Merge: 0704227f d7ce1691
Author: matija marjanovic <[email protected]>
Date:   Wed Feb 26 23:51:23 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 0704227ff6bc01ef4026d72f9ddaa4cc4a3cae9b
Merge: e8c1150a 3288fe82
Author: matija marjanovic <[email protected]>
Date:   Tue Feb 25 15:36:03 2025 +0100

    Merge branch 'master' into feat/token-hub

commit e8c1150ae18b5e1a78cf372475ad6581caea355c
Merge: 15341be0 85b3c0b7
Author: matija marjanovic <[email protected]>
Date:   Sat Feb 22 14:15:53 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 15341be041e52f61c2bdccb9dca25f68bf4f24c6
Author: matijamarjanovic <[email protected]>
Date:   Thu Feb 20 16:17:25 2025 +0100

    update grc20 reg

commit 83174f8d5976d9b62fae9ef07a178650b4ab3997
Author: matijamarjanovic <[email protected]>
Date:   Thu Feb 20 16:15:05 2025 +0100

    update with new names from 0a239e1ec444916260c400324ccb66fc02f01bc2

commit 76a1d9641ffab774e347e26e69b32644fa2629cb
Merge: 947a4565 b04ca6c5
Author: matija marjanovic <[email protected]>
Date:   Thu Feb 20 16:12:30 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 947a4565fbd7f104bc7de3200e96ac0a53dbeeaf
Merge: 05982b27 d7e18a22
Author: matija marjanovic <[email protected]>
Date:   Tue Feb 18 22:57:14 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 05982b273f83e15cc8154d7d9526dea3d28d5ee7
Merge: 272e0657 91300636
Author: matija marjanovic <[email protected]>
Date:   Mon Feb 17 14:38:55 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 272e065718dec2b5994d67f5f12faa0b0aaae90a
Author: matijamarjanovic <[email protected]>
Date:   Sat Feb 15 18:53:07 2025 +0100

    replace wrong name

commit 971170e47e13983b00b60126fee421c10c9b4790
Author: matijamarjanovic <[email protected]>
Date:   Sat Feb 15 17:08:30 2025 +0100

    add getalltokenswithdetails

commit 616130103388cf63d30c90f915aeaf24f164b4a2
Merge: 997eeeab fcd0e04e
Author: matijamarjanovic <[email protected]>
Date:   Sat Feb 15 17:02:01 2025 +0100

    Merge branch 'feat/token-hub' of https://github.com/matijamarjanovic/gno into feat/token-hub

commit 997eeeab6b966b26f51a54851e7b67443d12c6b3
Author: matijamarjanovic <[email protected]>
Date:   Sat Feb 15 17:01:59 2025 +0100

    add get all tokens with info

commit fcd0e04ed68cd3dee6090174e5fb4b3f9c82e83b
Merge: f3b4f2b4 9884ba10
Author: matijamarjanovic <[email protected]>
Date:   Sat Feb 15 16:58:42 2025 +0100

    Merge branch 'master' into feat/token-hub

commit f3b4f2b44c89c089b19b6a41e8d8bd256d2c8fd6
Merge: bd108006 2e491411
Author: matijamarjanovic <[email protected]>
Date:   Fri Feb 14 00:04:03 2025 +0100

    Merge branch 'master' into feat/token-hub

commit bd1080066da593e57996d4ac5e41ff28511491a2
Merge: beca6637 d0201fb3
Author: matijamarjanovic <[email protected]>
Date:   Wed Feb 12 11:36:54 2025 +0100

    Merge branch 'master' into feat/token-hub

commit beca66374d5d6c0ed874abf52494dd96aa0e79fd
Author: matijamarjanovic <[email protected]>
Date:   Wed Feb 12 10:54:41 2025 +0100

    replace paths for tokenhub

commit 7028ad3942308fefe49aac3e66e13deffbf9fbd7
Author: matijamarjanovic <[email protected]>
Date:   Wed Feb 12 00:22:43 2025 +0100

    run make test.sync in examples

commit 5918dd56e161344760d30ca6119c287a79ffb4c5
Author: matijamarjanovic <[email protected]>
Date:   Wed Feb 12 00:13:27 2025 +0100

    fix test?

commit 2675fc06c69e5cf063fb738697760990e56cce9d
Author: matijamarjanovic <[email protected]>
Date:   Wed Feb 12 00:04:33 2025 +0100

    fix tests

commit 5fa00c8981274982bd3fdb55916707557325142a
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:58:28 2025 +0100

    move tokenhub back to my namespace

commit 3f32a329f53c1be59787489d1dd2243cc6be38f1
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:57:46 2025 +0100

    fix formatting

commit edd676b9e78661d41211205e34269f0e223e6863
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:53:53 2025 +0100

    simplify logic

commit 9ee19b1124300debd7b97211125e78da0769200e
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:47:58 2025 +0100

    fix formatting, remove new lines

commit 2a2a02910b4e953f52a313d51cff0dcaeb7377d7
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:44:34 2025 +0100

    fix links

commit b9580c804b60e2f1035390149074c3dfdbea078c
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:37:23 2025 +0100

    add renderFooter

commit 13d327c6b6aba9d1f480f297be3602ba97a53a33
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 11 23:31:58 2025 +0100

    don't export renders. move consts to render.gno

commit f64687cbd30c3fb8d75a08c536f1ced23b7c5b2e
Merge: 0db4ec89 31fcf6aa
Author: matijamarjanovic <[email protected]>
Date:   Mon Feb 10 22:52:40 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 0db4ec89832c680af165b076a31b865ae4ba5a55
Author: matijamarjanovic <[email protected]>
Date:   Thu Feb 6 18:23:25 2025 +0100

    try and fix tsts

commit ecd1b522a3327255c3d27774356f9fa70706b54d
Author: matijamarjanovic <[email protected]>
Date:   Thu Feb 6 17:05:32 2025 +0100

    fix fmt

commit 7bcf274882b2c6c77b8205c5fa61ec02ee8f275b
Author: matijamarjanovic <[email protected]>
Date:   Thu Feb 6 17:02:13 2025 +0100

    add tests for getters

commit 0bf538896d541d7a3921f110afb2fc854ef869d7
Merge: e70b81a0 a01a030a
Author: matijamarjanovic <[email protected]>
Date:   Thu Feb 6 16:54:52 2025 +0100

    Merge branch 'master' into feat/token-hub

commit e70b81a0da35c4933a6f9d44c165f95b89e60ee5
Merge: 50305aad 0b76b0b0
Author: matijamarjanovic <[email protected]>
Date:   Wed Feb 5 20:30:24 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 50305aad6ceb60431969a4c6566d90c5aa021543
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 4 18:15:44 2025 +0100

    add hof registration

commit d09eebcff97fdfd8bf58e3963103d33aa659d606
Merge: 403efc5c 85a8740b
Author: matijamarjanovic <[email protected]>
Date:   Tue Feb 4 14:54:01 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 403efc5c43de89e5415750d7962984ae26a32a61
Author: matijamarjanovic <[email protected]>
Date:   Fri Jan 31 02:22:17 2025 +0100

    fix tests

commit 1c3b939b47dc7f86d6809441cbcfcf41ad18f719
Merge: cbfe5979 57da3243
Author: matijamarjanovic <[email protected]>
Date:   Fri Jan 31 02:05:03 2025 +0100

    Merge branch 'master' into feat/token-hub

commit cbfe597988cc117d0130991b17cba9516a6d35b2
Merge: baeadcb7 a885c78d
Author: Leon Hudak <[email protected]>
Date:   Tue Jan 28 23:08:08 2025 +0100

    Merge branch 'master' into feat/token-hub

commit baeadcb795d898119d0b1ad40dda390fea482f9b
Author: matijamarjanovic <[email protected]>
Date:   Thu Jan 23 19:55:42 2025 +0100

    remove files

commit 7c5c2a72f996b7b12a10a1088b7406ce5a69fd4b
Merge: 13e4992c dabdf613
Author: matijamarjanovic <[email protected]>
Date:   Thu Jan 23 19:55:03 2025 +0100

    Merge branch 'feat/token-hub' of https://github.com/matijamarjanovic/gno into feat/token-hub

commit 13e4992c6a099119b1d2eabbf4eb1a0b72e55548
Author: matijamarjanovic <[email protected]>
Date:   Thu Jan 23 19:54:47 2025 +0100

    -move token hub to r/demo
    -adapt grc20reg to use the right key

commit dabdf613fbb56857b18dfe9532a692e7e8e913c3
Merge: 8d85cf13 8e1c5328
Author: matijamarjanovic <[email protected]>
Date:   Thu Jan 23 19:54:04 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 8d85cf13f211d2d34d6a65d007f174b64561a897
Merge: 0adea0ec fd244862
Author: matijamarjanovic <[email protected]>
Date:   Thu Jan 23 18:14:25 2025 +0100

    Merge branch 'master' into feat/token-hub

commit 0adea0ec8955b9c33e518ba74423ee89ce7d6264
Author: matijamarjanovic <[email protected]>
Date:   Wed Jan 22 14:38:01 2025 +0100

    set page size to 10

commit 1e0f60c4cbcaba2fb6cf32345b8dde30b98334fc
Author: matijamarjanovic <[email protected]>
Date:   Tue Jan 21 21:40:50 2025 +0100

    fix fmt again

commit 7be170b55fbf32ece95e4d94bf5e8bf8a368d16b
Author: matijam…
stefann-01 pushed a commit to stefann-01/gno that referenced this pull request Mar 19, 2025
## Description

Adds a simple package to make your Gno errors match your realm path.

Go wizards tell me if I'm doing something wrong 🙏
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧾 package/realm Tag used for new Realms or Packages.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

4 participants