Fossil SCM

Deemphasize "leaf" and "closed-leaf" on the timeline. But add emphasis to the check-in hash, as that part is far more important.

drh 2025-10-17 13:55 timeline-enhance-2025
Commit 33de43f0f12c1e0a19164c74a47a7975d1fd2e6ba4b1e314e6200f660070da74
1 file changed +30 -6
+30 -6
--- src/timeline.c
+++ src/timeline.c
@@ -198,13 +198,13 @@
198198
199199
if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
200200
cgi_printf("(");
201201
}
202202
203
-/* Set to 1 for historical appearance. Set to 0 for new experimental look */
204
-#define OLD_STYLE 1
205
-#if OLD_STYLE
203
+/* Set to 0 for historical appearance. Set to 1 or more for new looks */
204
+#define EXTRA_FORMAT 2
205
+#if EXTRA_FORMAT==0
206206
if( (tmFlags & TIMELINE_CLASSIC)==0 ){
207207
if( zType[0]=='c' ){
208208
int isLeaf = db_column_int(pQuery, 5);
209209
if( isLeaf ){
210210
if( has_closed_tag(rid) ){
@@ -224,11 +224,35 @@
224224
}
225225
}else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
226226
|| zType[0]=='n' || zType[0]=='f'){
227227
cgi_printf("artifact:&nbsp;%z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
228228
}
229
-#endif /* OLD_STYLE */
229
+#endif /* EXTRA_FORMAT==0 */
230
+#if EXTRA_FORMAT==2
231
+ if( (tmFlags & TIMELINE_CLASSIC)==0 ){
232
+ if( zType[0]=='c' ){
233
+ int isLeaf = db_column_int(pQuery, 5);
234
+ const char *zPrefix;
235
+ if( isLeaf ){
236
+ zPrefix = has_closed_tag(rid) ? "closed&nbsp;" : "leaf&nbsp;";
237
+ }else{
238
+ zPrefix = "";
239
+ }
240
+ cgi_printf("%scheck-in:&nbsp;%z<strong>%S</strong></a> ",
241
+ zPrefix, href("%R/info/%!S",zUuid),zUuid);
242
+ }else if( zType[0]=='e' && tagid ){
243
+ cgi_printf("technote:&nbsp;");
244
+ hyperlink_to_event_tagid(tagid<0?-tagid:tagid);
245
+ }else{
246
+ cgi_printf("artifact:&nbsp;%z%S</a> ",
247
+ href("%R/info/%!S",zUuid),zUuid);
248
+ }
249
+ }else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
250
+ || zType[0]=='n' || zType[0]=='f'){
251
+ cgi_printf("artifact:&nbsp;%z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
252
+ }
253
+#endif /* EXTRA_FORMAT==0 */
230254
231255
if( g.perm.Hyperlink && fossil_strcmp(zDispUser, zThisUser)!=0 ){
232256
char *zLink;
233257
if( zType[0]!='f' || (tmFlags & TIMELINE_FORUMTXT)==0 ){
234258
zLink = mprintf("%R/timeline?u=%h&c=%t&y=a", zDispUser, zDate);
@@ -280,11 +304,11 @@
280304
href("%R/deltachain/%d",rid), rid);
281305
}
282306
}
283307
tag_private_status(rid);
284308
285
-#if !OLD_STYLE
309
+#if EXTRA_FORMAT==1
286310
if( (tmFlags & TIMELINE_CLASSIC)==0 ){
287311
if( zType[0]=='e' && tagid ){
288312
char *zId = db_text(0,
289313
"SELECT substr(tagname,7) FROM tag WHERE tagid=abs(%d)", tagid);
290314
cgi_printf(" technote:&nbsp;%z%S</a>",
@@ -291,11 +315,11 @@
291315
href("%R/technote/%t",zId), zId);
292316
}else{
293317
cgi_printf(" hash:&nbsp;%z%S</a>", href("%R/info/%!S", zUuid), zUuid);
294318
}
295319
}
296
-#endif /* !OLD_STYLE */
320
+#endif /* EXTRA_FORMAT==1 */
297321
298322
/* End timelineDetail */
299323
if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
300324
cgi_printf(")");
301325
}
302326
--- src/timeline.c
+++ src/timeline.c
@@ -198,13 +198,13 @@
198
199 if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
200 cgi_printf("(");
201 }
202
203 /* Set to 1 for historical appearance. Set to 0 for new experimental look */
204 #define OLD_STYLE 1
205 #if OLD_STYLE
206 if( (tmFlags & TIMELINE_CLASSIC)==0 ){
207 if( zType[0]=='c' ){
208 int isLeaf = db_column_int(pQuery, 5);
209 if( isLeaf ){
210 if( has_closed_tag(rid) ){
@@ -224,11 +224,35 @@
224 }
225 }else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
226 || zType[0]=='n' || zType[0]=='f'){
227 cgi_printf("artifact:&nbsp;%z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
228 }
229 #endif /* OLD_STYLE */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
230
231 if( g.perm.Hyperlink && fossil_strcmp(zDispUser, zThisUser)!=0 ){
232 char *zLink;
233 if( zType[0]!='f' || (tmFlags & TIMELINE_FORUMTXT)==0 ){
234 zLink = mprintf("%R/timeline?u=%h&c=%t&y=a", zDispUser, zDate);
@@ -280,11 +304,11 @@
280 href("%R/deltachain/%d",rid), rid);
281 }
282 }
283 tag_private_status(rid);
284
285 #if !OLD_STYLE
286 if( (tmFlags & TIMELINE_CLASSIC)==0 ){
287 if( zType[0]=='e' && tagid ){
288 char *zId = db_text(0,
289 "SELECT substr(tagname,7) FROM tag WHERE tagid=abs(%d)", tagid);
290 cgi_printf(" technote:&nbsp;%z%S</a>",
@@ -291,11 +315,11 @@
291 href("%R/technote/%t",zId), zId);
292 }else{
293 cgi_printf(" hash:&nbsp;%z%S</a>", href("%R/info/%!S", zUuid), zUuid);
294 }
295 }
296 #endif /* !OLD_STYLE */
297
298 /* End timelineDetail */
299 if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
300 cgi_printf(")");
301 }
302
--- src/timeline.c
+++ src/timeline.c
@@ -198,13 +198,13 @@
198
199 if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
200 cgi_printf("(");
201 }
202
203 /* Set to 0 for historical appearance. Set to 1 or more for new looks */
204 #define EXTRA_FORMAT 2
205 #if EXTRA_FORMAT==0
206 if( (tmFlags & TIMELINE_CLASSIC)==0 ){
207 if( zType[0]=='c' ){
208 int isLeaf = db_column_int(pQuery, 5);
209 if( isLeaf ){
210 if( has_closed_tag(rid) ){
@@ -224,11 +224,35 @@
224 }
225 }else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
226 || zType[0]=='n' || zType[0]=='f'){
227 cgi_printf("artifact:&nbsp;%z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
228 }
229 #endif /* EXTRA_FORMAT==0 */
230 #if EXTRA_FORMAT==2
231 if( (tmFlags & TIMELINE_CLASSIC)==0 ){
232 if( zType[0]=='c' ){
233 int isLeaf = db_column_int(pQuery, 5);
234 const char *zPrefix;
235 if( isLeaf ){
236 zPrefix = has_closed_tag(rid) ? "closed&nbsp;" : "leaf&nbsp;";
237 }else{
238 zPrefix = "";
239 }
240 cgi_printf("%scheck-in:&nbsp;%z<strong>%S</strong></a> ",
241 zPrefix, href("%R/info/%!S",zUuid),zUuid);
242 }else if( zType[0]=='e' && tagid ){
243 cgi_printf("technote:&nbsp;");
244 hyperlink_to_event_tagid(tagid<0?-tagid:tagid);
245 }else{
246 cgi_printf("artifact:&nbsp;%z%S</a> ",
247 href("%R/info/%!S",zUuid),zUuid);
248 }
249 }else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
250 || zType[0]=='n' || zType[0]=='f'){
251 cgi_printf("artifact:&nbsp;%z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
252 }
253 #endif /* EXTRA_FORMAT==0 */
254
255 if( g.perm.Hyperlink && fossil_strcmp(zDispUser, zThisUser)!=0 ){
256 char *zLink;
257 if( zType[0]!='f' || (tmFlags & TIMELINE_FORUMTXT)==0 ){
258 zLink = mprintf("%R/timeline?u=%h&c=%t&y=a", zDispUser, zDate);
@@ -280,11 +304,11 @@
304 href("%R/deltachain/%d",rid), rid);
305 }
306 }
307 tag_private_status(rid);
308
309 #if EXTRA_FORMAT==1
310 if( (tmFlags & TIMELINE_CLASSIC)==0 ){
311 if( zType[0]=='e' && tagid ){
312 char *zId = db_text(0,
313 "SELECT substr(tagname,7) FROM tag WHERE tagid=abs(%d)", tagid);
314 cgi_printf(" technote:&nbsp;%z%S</a>",
@@ -291,11 +315,11 @@
315 href("%R/technote/%t",zId), zId);
316 }else{
317 cgi_printf(" hash:&nbsp;%z%S</a>", href("%R/info/%!S", zUuid), zUuid);
318 }
319 }
320 #endif /* EXTRA_FORMAT==1 */
321
322 /* End timelineDetail */
323 if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
324 cgi_printf(")");
325 }
326

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button