Skip to content

Add documentation CI/CD workflow and update Doxygen CSS theme#56

Merged
Poofjunior merged 17 commits intomainfrom
dev/docs-refresh
Jun 28, 2025
Merged

Add documentation CI/CD workflow and update Doxygen CSS theme#56
Poofjunior merged 17 commits intomainfrom
dev/docs-refresh

Conversation

@glopesdev
Copy link
Collaborator

Documentation will automatically publish to GitHub Pages when:

  • A release is made
  • A manual workflow dispatch is initiated and publishing is enabled
  • Any push to any branch is made when CONTINUOUS_DOCUMENTATION is enabled (intended for use in forks for development purposes, but this is not enforced.)

Doxygen was also updated to version 1.12.0, the layout updated to use Doxygen Awesome CSS theme, and favicon and logo added for consistency with other Harp documentation websites.

Following merge to main the new layout will be published.

Preview at: https://glopesdev.github.io/core.pico/

@glopesdev glopesdev requested a review from Poofjunior June 12, 2025 10:13
@glopesdev glopesdev added the documentation Improvements or additions to documentation label Jun 12, 2025
This is to ensure all dependencies are resolved and pulled correctly to
allow output format plugin registration.
Copy link
Collaborator

@PathogenDavid PathogenDavid left a comment

Choose a reason for hiding this comment

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

Left some other last-minute thoughts on Doxygen stuff and things. No show-stoppers, mainly polish stuff.

<tbody>
<tr id="projectrow">
<!--BEGIN PROJECT_LOGO-->
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"$logosize/></td>
Copy link
Collaborator

Choose a reason for hiding this comment

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

It would be really nice if clicking this or the project name brought you back to the main page like most websites do.

Copy link
Collaborator Author

@glopesdev glopesdev Jun 16, 2025

Choose a reason for hiding this comment

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

Good point, I wonder if it would be more or less confusing to have the logo point to harp-tech.org instead of the main page?

I say this since there is already a link to the index of the Core Pico in the navigation bar called "Main Page" which would then become redundant. I wonder if there is a way to reorganize that, but I couldn't find it.

Copy link
Collaborator

@Poofjunior Poofjunior left a comment

Choose a reason for hiding this comment

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

Thanks for taking a pass at cleaning up the presentation! I confirmed that I can generate the documentation locally. (Dark mode looks great too!)

Do have thoughts on where self-contained examples could go within the documentation? (For small, in-line examples demonstrating the use of a function, we can put them inside the function with \code and \endcode.)

(Aside: this is probably a good incentive for me to clean up the interface and hide some of the extraneous functions as private so

When the docs go live, let's make sure that we link the final docs link in the main README (or somewhere else that's easy to find.)

@Poofjunior
Copy link
Collaborator

Poofjunior commented Jun 16, 2025

Another observation from my end: is it possible to sort public and private member functions into separate categories?

What I'm seeing now is one huge alphebatized list where membership is flagged with a tag. I think the tags are useful, but what might be more helpful is to just bunch all of the private member functions together at the end. Most users wont need to reference these, so they just kinda get in the way.

(I'm trying to put myself in the shoes of a totally new user that wants to get a sense of what they can do with the Harp core at a glance.)

@glopesdev
Copy link
Collaborator Author

glopesdev commented Jun 16, 2025

Most users wont need to reference these, so they just kinda get in the way.

@Poofjunior that sounds reasonable, I will look it up, but in case this is not possible, what about just hiding all private functions?

In case a developer needs to access implementation details I would imagine they can always just look directly at the files or source code.

P.S.: it looks like one way to achieve this if we really wanted to show private members would be by explicitly grouping them by member groups but they need to be manually curated in the source code.

@Poofjunior
Copy link
Collaborator

@Poofjunior that sounds reasonable, I will look it up, but in case this is not possible, what about just hiding all private functions?

In case a developer needs to access implementation details I would imagine they can always just look directly at the files or source code.

P.S.: it looks like one way to achieve this if we really wanted to show private members would be by explicitly grouping them by member groups but they need to be manually curated in the source code.

@glopesdev Ideally we find a way to separate them in the docs, but in a pinch, hiding all the private member functions seems totally ok too.

@glopesdev
Copy link
Collaborator Author

glopesdev commented Jun 17, 2025

What I'm seeing now is one huge alphebatized list where membership is flagged with a tag.

@Poofjunior Can you send a link to an example where you see this?

Let me know if this grouping is enough, otherwise I might remove private members for now while we figure out a different strategy.

I have experimented using @defgroup and that works too, but the groups would need to be manually curated, and would be placed inside the Topics index category as what happens now for pico_stdio_usb.

@glopesdev
Copy link
Collaborator Author

glopesdev commented Jun 17, 2025

Do have thoughts on where self-contained examples could go within the documentation? (For small, in-line examples demonstrating the use of a function, we can put them inside the function with \code and \endcode.)

Not many thoughts, as I have no prior experience with Doxygen and also not sure yet who will be maintaining these docs or writing the examples. Probably would be easier to discuss that first and go into more detail through the examples themselves, to get a feeling of how extensive they might be, etc. outside of this PR.

I am documenting below some of my ramblings on a brief exploration I did with Doxygen for future reference.

Doxygen allows for different grouping strategies usually built around the concept of a topic group, but we can also use Subpaging to make structure a bit more natural for the person who is editing the documentation.

For example we could have something like:

📦docs
 ┣ 📂articles
 ┃ ┣ 📂examples
 ┃ ┃ ┣ 📜blinking.md
 ┃ ┃ ┗ 📜irq.md
 ┃ ┗ 📜examples-toc.md
 ┣ 📜Doxyfile
 ┗ 📜README.md

examples-toc.md

\page examples Examples
- \subpage blinking
- \subpage irq

blinking.md

\page blinking Blinking
# Blinking

Description of the blinking example.

This generates the below hierarchical structure in the index, with a separate navigation bar entry for "Related pages".

image

This may or may not be interesting as it creates yet another documentation section. Alternatively we could just keep to "Topics" and define subgroups, but I haven't been able to get them to create nested hierarchies properly.

@Poofjunior
Copy link
Collaborator

@glopesdev another documentation section is totally acceptable. I think this would be a great draft, and I agree that we can probably discuss example placement/content later.

@Poofjunior Poofjunior merged commit 8a96b8d into main Jun 28, 2025
5 checks passed
@Poofjunior
Copy link
Collaborator

@glopesdev feel free to delete the branch at your leisure!

@glopesdev
Copy link
Collaborator Author

@Poofjunior thanks for merging, actually I had forgotten to push two more changes to address your comments above, but I will open a separate PR for that.

@Poofjunior
Copy link
Collaborator

@glopesdev got it and thank you! I just merged that one too. Cheers!

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

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants