Things to work on:
Automated self-test
Improvements to the "grep" command:
Change the PHANTOM table into a view on BLOB using a partial index where BLOB.SIZE<0.
(削除) Prohibit database writes if any query parameters have been decoded
but the request is not from the same origin. This effort would benefit from
an SQLite enhancement that allows "PRAGMA query_only" to be applied to
individual database files, so that the repository can be made read-only while
still allowing TEMP writes, as TEMP writes are used to compose intermediate
results even on pages that are technically read-only. (削除ここまで)
Implemented using multiple check-ins on 2022年12月28日.
Sync relay → On a server, when another repository pushes to the server (or edits a wiki page on the server) the server automatically schedules a push to peer repos. Should be able to do this with hooks, but more testing is needed. Also, need a way to configure relay hooks in the Admin web interface. Consider also providing the ability to do an automatic GitHub relay via the same mechanism.
Update /ci_edit and forum edit previews via ajax instead of reloading the entire page. Implemented in /wikiedit and /fileedit as of 2.12. Closely related:
Search on help-text and/or on unversioned files
Documentation on sync-via-sneaker-net.
Macros or other mechanisms for embedding a last-update timestamp in the middle of text for wiki pages and/or embedded documentation.
Add a command-line variant of the /secaudit0 page and make that command accessible using "fossil all".
Improved transaction control:
Add the ability to associate a forum thread with a check-in or branch or ticket. One artifact-type-agnostic mechanism for N-to-N cross-artifact links is proposed in ticket [2cc5acf3ba].
Provide a setting that determines whether HTML content files are displayed as HTML or as plain text when browsing repository files. See the forum thread: https://www.fossil-scm.org/forum/forumpost/cc9d20228d
Client/Server mode or Shallow Clones. Allow a remote repository to be opened without having to clone all history.
When entering a check-in comment using $EDITOR, there is no way to preview the comment.
This is particular frustrating when there are hyperlinks or Wiki escape codes
(like "<" or "["). Errors result. For example on
check-in 5244a5484a103065 the comment was originally entered
using a Markdown-style hyperlink. Only after the commit completed was the error
seen, and the check-in comment was fixed with a tag.
More "diff" links associated with Wiki.
Add the ability to provide change comments on Wiki-Page edits. The existing artifact format already supports this, but the code does not provide the user with an option to enter a change comment with a wiki edit, and any change comment that is entered is silently ignored, rather than being displayed in the timeline or on the /whistory page.
Timeline graph improvement opportunities:
New manifest setting options.
manifest.h → a C/C++ header containing macros like FOSSIL_MANIFEST_UUID and FOSSIL_MANIFEST_DATE.
Programs can #include this header to gain easy access to version information.
manifest.json and manifest.tcl
and manifest.py? Where do we draw the line?
manifest.date. That in combination with manifest.uuid
provides most of the versioning information that most programs will need.
For the purpose of regression testing when changing the markup language formatters, provide test commands that will scan an entire repository for Wiki or Markdown-formatted artifacts (embedded documentation, Wiki, Ticket comments, Forum posts) and run them through the formatter. Then, after making changes to formatters, we can run this command on various large repos both in the old and new version and look for unexpected differences. We could also maybe run this test prior to each release.
New email notifications for administrators:
The /timeline page has many options, only a few of which are selectable from the submenu bar. Perhaps the "Advanced" submenu option should expand to a much larger "submenu" (using client-side javascript) that includes options to:
An alternative to this idea is to have a submenu off of /sitemap that provides links to many of the specialized timelines.
(削除) The passwords stored on behalf of fossil remote are obfuscated,
but are still accessible to an attacker who gains unrestricted access to a
local repository clone.
Perhaps it would be better to store a security token (a 64-digit
random hex value). This security token could only be used to sync, not to login.
If the local repository is compromised, the attacker could push content, but could
not perform administrative actions. And they wouldn't learn the password which
might be shared by other repositories and/or services. (削除ここまで)
(削除) The sync protocol might be enhanced so that after a successful login using the
password, over a TLS link, the server includes a pragma in the reply that passes
the security token to the client with the instruction to use that token for all
subsequent logins. In this way, the change is completely transparent to the
user and the user never has to even know that the security token exists. (削除ここまで)
This is implemented by check-in 41ba6ea7db6ce2ce. No changes were needed on the server side because the sync protocol already transmitted the password as a SHA1 encoding. The only change needed was to store the SHA1 encoding on the originating side, rather than the original password.
Add the ability to import 3rd-party skins and include them in the /skins selection list. The ability to edit such skins would be a big plus, e.g. to include any site-specific JS. Perhaps skins could be provided as "plain" format (the same file structure used by the existing skins), or perhaps in a format suitable for (fossil config import) (see tools/skintxt2config.c), or perhaps as sqlar and/or zip files. We'd need to be able to export skins as well. Motivating use case: it would be really nice to be able to host multiple skins generated by Inskinerator.
The "fossil patch create" command might include deltas against private artifacts. This needs to be fixed. Perhaps "fossil patch create" could be enhanced with a "--from VERSION" option that created a patch with a specific baseline. Perhaps also a "--branch BRANCHNAME" that creates a patch for the (presumably private) branch call BRANCHNAME.
(削除) Add a password reset mechanism. Turned off by default - enabled by a setting
and configurable under the Setup/Access control panel. There should be a warning
that it is turned on in the security scan. All password resets should be logged.
Password resets should be disabled for any user with Admin, Setup, or UV-Push
privileges. Perhaps password-reset should be a three-level setting:
(1) Off (the default). (2) On. (3) Message sent to moderators who much approve
the reset before it is accomplished. (削除ここまで)
There is now a means for ordinary users to request an email message that contains a secure hyperlink that allows them to reset their password. The feature is not available to users who have Admin or Setup privilege. We might go on to enhance this in various ways:
Thin clones → For testing on a transient VPS (or using docker) it would be nice
to be able to say: "fossil open https://sqlite.org/src" without it cloning everything.
In other words, it only pulls down enough to open the latest version.
Add a page similar to /hash-color-test which lists all current users, their colors, and any user-specific color codes from the user-color-map setting. It would enable manual adjustment of those color codes.
Enhancements to the "fossil ui CHECKOUT" command, especially for the case when CHECKOUT is on a remote system, to provide the ability to do more with that check-out:
These things can be a hassle to do on a remote system. The idea here is to make development on remote systems over SSH easier.
/chat's "toggle text mode" does not work properly with chatbot-emitted messages. Discovered by George on 2022年12月20日. Toggling the view once works, but toggling it back apparently causes everything except links to disappear. To reproduce it, simply use the "toggle text mode" feature on a chatbot-injected message twice in a row. 2024年01月29日: this is still happening. It does not happen for other users, strangely enough.